SQLite3はデフォルトで外部キー制約が無効になっている

こんにちは!

今回はSQLite3はデフォルトで外部キー制約が無効になっていることについてまとめます。

何が起きるか

  • 外部キー制約を設定している列に対して、外部キーの参照先の列に存在しない値をINSERTできる

対処法

  • 下記コマンドをSQLに接続したときに毎回実行する
PRAGMA foreign_keys=true; 

おわりに

制約を設定しているはずなのに、デフォルトで無効なのはびっくりしますね。無効なIDを設定してしまわないように、外部キーの制約は有効にした上で活用していこうと思います。

17/100