1. ホーム
  2. sql

[解決済み] sqliteにオートインクリメントはありますか?

2022-05-28 07:52:21

質問

自動インクリメントのテーブルを作成しようとしています。 primary key Sqlite3 . 本当に可能かどうかわかりませんが、他のフィールドの指定だけでよいと思っています。

例えば

CREATE TABLE people (id integer primary key auto increment, first_name varchar(20), last_name varchar(20));

それから、値を追加するときは、これだけでいいと思っていました。

INSERT INTO people
VALUES ("John", "Smith");

こんなことが可能なのか?

私は sqlite3 の下に cygwin の下に表示されます。

どのように解決するのですか?

ROWIDと呼ばれるものが無料で提供されています。 これは、あなたが要求するかどうかにかかわらず、すべてのSQLiteテーブルにあります。

INTEGER PRIMARY KEY型のカラムを含む場合、そのカラムは自動的なROWIDカラムを指す(エイリアスである)。

ROWID (どのような名前で呼ぶにせよ) は、予想されるように、行を INSERT するたびに値が代入されます。 INSERT時に非NULL値を明示的に割り当てた場合、自動インクリメントの代わりに、その指定された値を取得します。 INSERT時に明示的にNULL値を割り当てた場合、次の自動インクリメントの値が取得されます。

また、避けるようにしたほうがよい。

 INSERT INTO people VALUES ("John", "Smith");

を使用し

 INSERT INTO people (first_name, last_name) VALUES ("John", "Smith");

の代わりに、"left" を使用します。 最初のバージョンは非常に壊れやすく、テーブル定義に列を追加、移動、または削除した場合、INSERTは失敗するか、間違ったデータ(間違った列の値)を生成してしまうでしょう。