外部キー制約のあるテーブルの切り捨て
外部キー制約のあるテーブルの切り捨ては困難な場合があります。 mygroup テーブルを切り詰めようとしたところ、次のエラーが発生したと想像してください:
ERROR 1701 (42000): Cannot truncate a table referenced in a foreign key constraint (mytest.instance, CONSTRAINT instance_ibfk_1 FOREIGN KEY (GroupID) REFERENCES mytest.mygroup (ID))
データベース スキーマ:
CREATE TABLE mygroup ( ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY ) ENGINE=InnoDB; CREATE TABLE instance ( ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, GroupID INT NOT NULL, DateTime DATETIME DEFAULT NULL, FOREIGN KEY (GroupID) REFERENCES mygroup(ID) ON DELETE CASCADE, UNIQUE(GroupID) ) ENGINE=InnoDB;
外部キー チェックの無効化:
テーブルを切り詰める従来の方法外部キー制約を一時的に無効にするには:
SET FOREIGN_KEY_CHECKS = 0; TRUNCATE mygroup; TRUNCATE instance; SET FOREIGN_KEY_CHECKS = 1;
注意: 外部キーのチェックを無効にすると、制約に違反するデータをテーブルに挿入できます。これにより、データの整合性の問題が発生する可能性があります。
代替案を検討してください:
可能であれば、TRUNCATE の代わりに DELETE ステートメントの使用を検討してください:
DELETE FROM mygroup; DELETE FROM instance;
DELETE は、外部キー制約を尊重しながら、テーブルからすべてのレコードを削除します。ただし、TRUNCATE よりも実行に時間がかかります。
以上がMySQL で外部キー制約を持つテーブルを切り詰める方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。