sqlite3で外部キーを有効にする | プロサバメモ

WEBプログラミングやサーバ設定などのメモ場

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

関連記事

TOP