【MariaDB・MySQL】外部キー制約(Foreign Key制約)を一時的に無効にする方法 | a foreign key constraint fails エラー対応

F-Key

こんにちはフロントエンドエンジニアのまさにょんです!

今回は、MariaDBやMySQLにおいて、外部キー制約(Foreign Key制約)を一時的に無効にする方法について解説します。

「 Cannot delete or update a parent row: a foreign key constraint fails 」

「 親行を削除または更新できません: 外部キー制約が失敗します 」(翻訳)

といったエラーに対応できます。

外部キー制約(Foreign Key 制約)

外部キー制約がかかっているテーブルやカラムに関しては、テーブルの削除や

外部キー制約(Foreign Key 制約)を無効にする方法

外部キー制約(Foreign Key 制約)を無効にするには、FOREIGN_KEY_CHECKSの値に「0」をセットします。

SET FOREIGN_KEY_CHECKS = 0;

外部キー制約(Foreign Key 制約)を有効にする方法

外部キー制約(Foreign Key 制約)を有効にするには、FOREIGN_KEY_CHECKSの値に「1」をセットします。

SET FOREIGN_KEY_CHECKS = 1;

外部キー制約(Foreign Key 制約)を一時的に無効にして、ムダなレコードを削除する

外部キー制約(Foreign Key 制約)を一時的に無効にして、ムダなレコードを削除して、

再び外部キー制約(Foreign Key 制約)を有効にします。

SET FOREIGN_KEY_CHECKS = 0;


delete from expressforms where id = 'c18ec264-1c54-11ed-9d2e-0242ac1a0002';


delete from expressentities where id = 'c18ec264-1c54-11ed-9d2e-0242ac1a0002';


SET FOREIGN_KEY_CHECKS = 1;

DB・SQL関連書籍

参考・引用

  1. [MySQL] 外部キー制約を一時的に無効にする

最近の投稿