外部キーを無視してテーブルを更新する

外部キーのあるテーブルはそのままでは削除できない

 mysql> CREATE TABLE t1 ( id int, PRIMARY KEY (id) );
 mysql> CREATE TABLE t2 ( id int, t1_id int, FOREIGN KEY (t1_id) REFERENCES t1 (id) ON DELETE CASCADE );
 mysql> DROP TABLE t1;
 ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails

外部キーを無視してテーブルを削除する

SET foreign_key_checks = 0

 mysql> SET FOREIGN_KEY_CHECKS = 0;
 mysql> DROP TABLE t1;
 mysql> SET FOREIGN_KEY_CHECKS = 0;

SET foreign_key_checks = 0 を実行しないかぎり、FOREIGN KEY 制約によって参照されるテーブルに対して DROP TABLE を発行できません。テーブルを削除すると、そのテーブルを作成するために使用されたステートメントで定義されていた制約もすべて削除されます。

参考

https://dev.mysql.com/doc/refman/5.6/ja/create-table-foreign-keys.html


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2019-09-18 (水) 15:16:16