foreign-keys - mysql 1 ) 无法在删除设置上创建外键,或者者在删除级联 2上无法删除级联

  显示原文与译文双语对照的内容
96 0

我无法在更新级联的删除级联上添加外键约束。

我使用两个简单的表。

TAB1有 2列:ID int(10) 无符号非空自动增量,数据 int(10) 无符号为空。

TAB2有 2列:ID int(10) 无符号非空自动增量,而 FK int(10) 无符号非空。

可以在表TAB2中的列前面创建外键,在具有"删除限制时"的TAB1 TAB1列ID上创建外键。

但是我不能用"删除级联"或者"删除设置为空"来创建这样的密钥。错误是"。#1215 - 无法添加外键约束"。

我试过签名的空的int(4). 。unserstand 。不要在哪里显示错误。

我在一个月之前在表 tcalendar 添加引用 is ( tcid ) 中创建的唯一外键( tcfkowner ) 。

I unserstand表示如果删除用户,则指向用户的日历中的行也将被删除。

相反,外键似乎限制了他父亲的删除:无法删除表 tuser 中的任何行,这些行由表 tcalendar 指向的外键( tcfkowner ) 指向。错误消息:

"MySQL说:文档

1451 - 无法删除或者更新父行:外键约束失败( gintare_calendartcalendar,约束 tcalendar_ibfk_1 外键( tcfkowner ) 引用 tuser ( tcid ) )"。
时间:原作者:0个回答

59 3

两个字段在主和详细表中,必须相同,先检查它。

尝试这里脚本创建表并添加外键-

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;
原作者:
117 3

无法添加"DELETE SET NULL",因为"is"中的设置字段设置为 NULL 。你可以通过更改级联或者设置字段来允许空值来修复这里问题。希望对我的英语有帮助和歉意

原作者:
...