SQLite | テーブル | PRIMARY KEY制約

PRIMARY KEYは一つ以上の列で行を一意に識別する。テーブルに設定できる主キーは一つである。

CREATE TABLE table_name (column_name PRIMARY KEY, ...);
CREATE TABLE table_name (column1, column2, PRIMARY KEY (column1, column2));

重複する値や複合キーの組み合わせは保存できない。

create table user (id int primary key, name text);
insert into user values (1, 'devkuma');
insert into user values (2, 'araikuma');
insert into user values (1, 'kimkc');
-- UNIQUE constraint failed: user.id

INTEGER PRIMARY KEY

正確にINTEGER PRIMARY KEYと宣言した列の値を省略すると、通常は現在の最大値に1を加えた値が割り当てられる。INT PRIMARY KEYは同じ動作をしない。

create table user (id integer primary key, name text);
insert into user (name) values ('devkuma');
insert into user (name) values ('araikuma');
insert into user (name) values ('kimkc');
insert into user values (8, 'happykuma');
insert into user (name) values ('mykuma');

IDは1, 2, 3, 8, 9となる。削除済みの値は明示的に再利用できる。

delete from user where id = 9;
insert into user values (9, 'yourkuma');

INTEGER PRIMARY KEYには整数へ変換できる値だけを保存できる。

create table numtest2 (id integer primary key);
insert into numtest2 values (10);
insert into numtest2 values ('7');
insert into numtest2 values ('Hello');
-- Error: datatype mismatch