我无法在UPDATE CASCADE上添加外键约束ON DELETE CASCADE。
我使用两个简单的表格。
TAB1有2列:ID int(10)unsigned NOT NULL AUTOINCREMENT,data int(10)unsigned NOT NULL。
TAB2有2列:ID int(10)unsigned NOT NULL AUTOINCREMENT,和FK int(10)unsigned NOT NULL。
我可以使用“ON DELETE RESTRICT”在TAB1中的列ID上的表TAB2中创建外键前端列FK。
但是我无法使用“ON DELETE CASCADE”或“ON DELETE SET NULL”创建这样的键。错误是“#1215 - 无法添加外键约束”。
我尝试过signed,NULL,int(4)... ets。不要在错误的哪个地方留言。
我在一个月前用CASCADE创建的唯一FOREIGN KEY(tcfkowner
)在TABLE tcalendar
ADD REFERENCES tuser(tcid
)中。
我知道在DELETE CASCADE上意味着如果我删除用户,日历中指向用户的行也将被删除。
相反,外键似乎限制了对其父级的删除:我无法删除TABLE tuser
中由FOR tcfkowner
指向的任何行。tcalendar
来自TABLE gintare_calendar
。错误消息:
“MySQL说:文档
tcalendar
。tcalendar_ibfk_1
,CONSTRAINT tcfkowner
FOREIGN KEY(tuser
)REFERENCES {{1 (tcid
))“。答案 0 :(得分:0)
两个字段 - 在主表和详细表中,必须相同;先检查一下。
尝试使用此脚本创建表并添加外键 -
CREATE TABLE tab1 (
id int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
data int(10) UNSIGNED NOT NULL,
PRIMARY KEY (id)
)
ENGINE = INNODB;
CREATE TABLE tab2 (
id int(10) UNSIGNED NOT NULL,
fk int(10) UNSIGNED NOT NULL
)
ENGINE = INNODB;
ALTER TABLE tab2
ADD CONSTRAINT FK_tab2_tab1_id FOREIGN KEY (fk)
REFERENCES tab1(id) ON DELETE CASCADE ON UPDATE RESTRICT;
或者只是试试这个 -
CREATE TABLE tab1 (
id int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
data int(10) UNSIGNED NOT NULL,
PRIMARY KEY (id)
)
ENGINE = INNODB;
CREATE TABLE tab2 (
id int(10) UNSIGNED NOT NULL,
fk int(10) UNSIGNED NOT NULL,
CONSTRAINT FK_tab2_tab1_id FOREIGN KEY (fk)
REFERENCES tab1 (id) ON DELETE CASCADE ON UPDATE RESTRICT
)
ENGINE = INNODB;
答案 1 :(得分:0)
您无法添加ON DELETE SET NULL,因为TAB1中的设置字段设置为非空。 您可以通过更改级联或设置字段以允许空值来解决此问题。 希望对我的英语有所帮助和抱歉