読者です 読者をやめる 読者になる 読者になる

文系男子が日和るIT開発~IT知識なしで飛び込んだIT企業

文系男子だからIT企業に就職するなんて考えてもみませんでしたが、日和ながら日々くらいついています。

SQLite3入門 constraint failed 【VMWareでSQLデータ管理】

VMWare DataBase CentOS

テーブル名「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制約違反が発生した場合のエラーは同じメッセージが表示されることがわかる。