外部キー制約テーブルを切り捨てるにはどうすればいいですか? 質問する

外部キー制約テーブルを切り捨てるにはどうすればいいですか? 質問する

TRUNCATE が機能しないのはなぜですかmygroup? 機能しているにもかかわらず、次の結果が表示されますON DELETE CASCADE SET:

エラー 1701 (42000): 外部キー制約で参照されているテーブルを切り捨てることはできません ( mytest. instance、CONSTRAINT instance_ibfk_1FOREIGN KEY ( GroupID) REFERENCES mytest. mygroup( ID))

drop database mytest;
create database mytest;
use mytest;

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;

ベストアンサー1

はい、できます:

SET FOREIGN_KEY_CHECKS = 0;

TRUNCATE table1;
TRUNCATE table2;

SET FOREIGN_KEY_CHECKS = 1;

これらのステートメントを使用すると、制約に準拠していない行がテーブルに入力されるリスクがありますFOREIGN KEY

おすすめ記事