SQLite3でオートインクリメント
細かい部分でつまづきつつ、PHP Labo のプログラムを書き換え中。
SQLite2でオートインクリメントな列を作りたい場合、テーブル作成時に
no INTEGER UNSIGNED NOT NULL PRIMARY KEY
としていたのだけど、SQLite3ではデータの挿入ができませんでした…。
address.no may not be NULL
とか言われてしまいます。(address
はテーブル名。)色々試したところ、
no INTEGER PRIMARY KEY
ならSQLite2でもSQLite3でも大丈夫だった。調べてみると、NOT NULL
を指定しているとバージョンによって微妙に挙動が異なるらしい。うーむ。
ちなみにSQLite3からは AUTOINCREMENT
というキーワードが追加されているらしいけど、SQLite2では動作しないので上の方法で行くとします。