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