SQLite3入門 constraint failed 【VMWareでSQLデータ管理】
テーブル名「test2_table」のカラム名「id」にPRIMARY_KEY制約をかけ、CREATE TABLEを行った。
データは下記のように登録する。
赤字の行で、「id=1」を登録したことにより、
最初の行との主キー制約違反となり
Error: constraint failed
が発生。
sqlite> create table test2_table(id number primary key, age number);
sqlite> insert into test2_table(id, age) values (1, 25);
sqlite> insert into test2_table(id, age) values (2, 22);
sqlite> insert into test2_table(id, age) values (3, 29);
sqlite> insert into test2_table(id, age) values (1, 29);
Error: constraint failed
当然ながらカラム名「age」にはPRIMARY KEY制約をかけていないため、
下記INSERT文はえらーとならない。
sqlite> insert into test2_table(id, age) values (4, 29);
sqlite>
テーブル名「TEST3_TABLE」として、
カラム名「ID」に primary key制約を、一方、カラム名「age」にはUNIQUE制約をかけてみる。
sqlite> create table test3_table(id number primary key, age number unique);
「id=1」で、且つ、「age=25」をINSERT。
sqlite> insert into test3_table(id, age) values (1, 25);
sqlite> select * from test3_table;
1|25
「id=1」で、且つ、「age=26」をINSERTすると、先ほど同様に
Error: constraint faile
が発生する。
sqlite> insert into test3_table(id, age) values (1, 26);
Error: constraint failed
sqlite>
sqlite> select * from test3_table;
1|25
また、「id=2」としても、「age=25」をINSERTすると、これも先ほど同様に
Error: constraint faile
が発生する。
sqlite> insert into test3_table(id, age) values (2, 25);
Error: constraint failed
このことから、PRIMARY KEY制約とUNIQUE制約違反が発生した場合のエラーは同じメッセージが表示されることがわかる。