我无法在DELETE CASCADE ON UPDATE CASCADE上添加外键约束。
我使用两个简单的表。
TAB1有两列: int(10) unsigned NOT NULL AUTOINCREMENT和data int(10) unsigned NOT NULL。
TAB2有两列: 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 -无法添加外键约束“。
我尝试过带符号,NULL,int(4)...ets.请勿取消错误所在位置。
我在一个月前用CASCADE成功创建的惟一外键(tcfkowner
)在表tcalendar
ADD REFERENCES (tcid
)中。
我不理解在DELETE CASCADE上的意思是,如果我删除用户,日历中指向该用户的行也会被删除。
相反,外键似乎限制了其父级的删除:我不能从表tuser
中删除由外键(tcfkowner
)指向的表tcalendar
中的任何行。错误消息:
“MySQL说:文档
1451 -无法删除或更新父行:外键约束失败(gintare_calendar
。tcalendar
,constraint tcalendar_ibfk_1
foreign key (tcfkowner
) REFERENCES tuser
(tcid
))“。
发布于 2014-01-23 23:20:11
主表和明细表中的两个字段必须相同,请先检查。
尝试使用此脚本创建表并添加外键-
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;
发布于 2015-12-27 10:12:30
不能添加ON DELETE SET null,因为TAB1中的设置字段设置为非NULL。您可以通过更改层叠或将字段设置为允许空值来修复此问题。希望对我的英语有所帮助和抱歉
https://stackoverflow.com/questions/21311232
复制相似问题