[英]1) NOT ABLE to create a foreign keys ON DELETE SET NULL, or ON DELETE CASCADE 2) Not able ON DELETE CASCADE
我无法在UPDATE CASCADE上的DELETE CASCADE上添加外键约束。
我使用两个简单的表。
TAB1有2列:ID int(10)无符号NOT NULL AUTOINCREMENT和数据int(10)无符号NOT NULL。
TAB2有2列:ID int(10)无符号NOT NULL AUTOINCREMENT和FK int(10)无符号NOT NULL。
我可以使用“ ON DELETE RESTRICT”在TAB1中的列ID上的表TAB2中创建外键fron列FK。
但是我无法使用“ ON DELETE CASCADE”或“ ON DELETE SET NULL”创建这样的键。 错误为“#1215-无法添加外键约束”。
我尝试使用带符号的NULL,int(4)... ets。 不要理解错误在哪里。
我一个月前用CASCADE设法创建的唯一FOREIGN KEY( tcfkowner
)在TABLE tcalendar
ADD REFERENCES tuser( tcid
)中。
我无法理解,在DELETE CASCADE上意味着如果删除用户,日历中指向该用户的行也将被删除。
相反,外键似乎限制了其父对象的删除:我无法从TABLE tcalendar
删除FOREIGN KEY( tcfkowner
)指向的TABLE tuser
任何行。 错误信息:
” MySQL说:文档
gintare_calendar
无法删除或更新父行:外键约束失败( tcalendar
,CONSTRAINT tcalendar_ibfk_1
FOREIGN KEY( tcfkowner
)参考tuser
( tcid
))”。 主表和明细表中的两个字段必须相同。 首先检查一下。
尝试使用此脚本创建表并添加外键-
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;
您不能添加ON DELETE SET NULL,因为TAB1中的设置字段设置为非null。 您可以通过更改级联或将字段设置为允许空值来解决此问题。 希望能帮助我,对不起我的英语
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.