sqlite3で外部キーを有効にする
2022.02.142022.03.23
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コマンド
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