SQLiteは勝手にIDを作らない
SQLiteのIDは自動採番です。しかし下記に注意しないといけません。
Id INTEGER PRIMARY KEY と指定した場合だけ、自動採番(Auto Increment的な動き) が有効になります。
もし指定しない場合、INSERT するときに自分でIDを入れる必要があります。
例えば
CREATE TABLE Users (Name TEXT);
INSERT INTO Users (Name) VALUES ('Alice'); -- ← これだけだと行番号は作られない
この場合、主キーも自動連番も存在しません。
Id INTEGER PRIMARY KEY の意味
SQLiteにおける自動生成IDの標準パターンです。
実行時に INSERT INTO Users (Name) VALUES ('Bob') のようにIDを省略すると、勝手に 1, 2, 3… と振られます。
プライマリキー(主キー)にもなるので、同じIDが重複しません。
じゃあ省略できるケースは?
もし「主キーやIDが不要」で、単に名前だけのリストを保存したい場合は省略可能です。
CREATE TABLE Users (Name TEXT);
ただし、この場合は行を一意に識別できないので、
特定の1行だけ削除する
1件だけ更新する
並び順を固定する
といった操作がやりにくくなります。
そういった事で、結局、
普通は Id INTEGER PRIMARY KEY を入れるのが安全
→ 行を一意に管理でき、削除や更新も楽になる
IDが本当に不要で、「全行まとめて削除」や「重複OKの単純リスト」なら省略可能
という事です。