こんにちはフロントエンドエンジニアのまさにょんです!
今回は、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;