このディレクトリの索引
http://toro.2ch.net/test/read.cgi/db/1316769778/574
#  MySQLかPostgreSQLかMongoDBかSQLiteのいずれかで以下のことを実現するSQLを伝授してください 
#  やりたいこと: id10とid11の間に新しいカラムを挿入する 
#   
#  id 10のカラム みかん 
#  id 11のカラム りんご 
#  ↓ 
#  id 10のカラム みかん 
#  id 12のカラム 新しく挿入した箇所 
#  id 13のカラム りんご 
# 

:- dynamic(最も最新のid/1).

最も最新のid(11).

新しいid(_id) :-
        retract(最も最新のid(_id_0)),
        _id is _id_0 + 1,
        assertz(最も最新のid(_id)).

'id10とid11の間に新しいカラムを挿入する'(_新しく挿入される名前) :-
        idが10以上の節を削除しながら収集する(_節ならび),
        新しいid(_新しいid),
        新しい節を挿入して(_新しいid,_新しく挿入される名前),
        残りの節にidを与えながら追加(_節ならび).

idが10以上の節を削除しながら収集する(_節ならび) :-
        findall(table(_id,_名前),(
                    table(_id,_名前),
                    _id > 10),
                _節ならび),
        節を全て削除する(_節ならび).

節を全て削除する([]).
節を全て削除する([P|R]) :-
        retract(P),
        節を全て削除する(R).

新しい節を挿入して(_新しいid,_新しく挿入される名前) :-
        assertz(table(_新しいid,_新しく挿入される名前)).

残りの節にidを与えながら追加([]).
残りの節にidを与えながら追加([table(_,_名前)|R]) :-
        新しいid(_id),
        assertz(table(_id,_名前)),
        残りの節にidを与えながら追加(R).