sqlite3で外部キーを有効にする

デフォルトでは外部キーを使用できない。
(CREATE TABLEで外部キー自体を作成することはできるが、デフォルトでは使用時に無視される。。。)
以下サンプルテーブル
CREATE TABLE test(
    id int primary key,
    name varchar(32)
);


CREATE TABLE test2(
    id int primary key,
    name varchar(32),
    test_id int,
    foreign key (test_id) references test(id)
);

外部キー(test_id)は作成できるが、このままでは外部キーは有効になっていない。

以下のコマンドをsqlite3で実行すると、外部キーが有効になる。
sqlite> PRAGMA foreign_keys=true;

これで外部キーが有効になりサンプルテーブルに以下のデータをinsertできなくなる。

sqlite> INSERT INTO test VALUES (1,'hoge');
sqlite> INSERT INTO test2 VALUES (1,'test',2);
Error: foreign key constraint failed
[root@localhost ~]# sqlite3 test "PRAGMA foreign_keys=true; INSERT INTO test2 VALUES (2,'name',11);"
Error: foreign key constraint failed

 

 

コメント

タイトルとURLをコピーしました