C#の勉強の中でSQLiteを使ってたら、主キーかつAUTO_INCREMENTを実現するのに無駄に時間がかかったのでそれについて。
ハマったこと
SQLiteを使って下のコードでidが主キーかつAUTO_INCREMENTなテーブルを作成したつもりが、レコードを追加してもインクリメントされなかった。
失敗コード
CREATE TABLE hoge(
id INTEGER AUTO_INCREMENT PRIMARY KEY,
//他のフィールド
)
解決策
SQLiteではPRIMARY KEYを設定したら勝手にオートインクリメントになるらしく、AUTO_INCREMENTを付ける必要がなかった。消したらうまくいった。(別に付けても動いてくれて良くないか???)
成功コード
CREATE TABLE hoge(
id INTEGER PRIMARY KEY,
//他のフィールド
)
まとめ
SQLiteで主キーかつAUTO_INCREMENTにするときは、PRIMARY KEYだけ付ければよい(MySQLでは両方書く必要がありそうなので、違いに注意)。