TRUNCATE が機能しないのはなぜですかmygroup
? 機能しているにもかかわらず、次の結果が表示されますON DELETE CASCADE SET
:
エラー 1701 (42000): 外部キー制約で参照されているテーブルを切り捨てることはできません (
mytest
.instance
、CONSTRAINTinstance_ibfk_1
FOREIGN KEY (GroupID
) REFERENCESmytest
.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
。