gpt4 book ai didi

mysql - 1) 无法在 DELETE SET NULL 或 ON DELETE CASCADE 上创建外键 2) 无法在 DELETE CASCADE 上创建外键

转载 作者:行者123 更新时间:2023-11-30 00:46:39 33 4
gpt4 key购买 nike

我无法在 DELETE CASCADE ON UPDATE CASCADE 上添加外键约束。

我使用两个简单的表格。

TAB1 有 2 列:ID int(10) unsigned NOT NULL AUTOINCRMENT 和 data int(10) unsigned NOT NULL。

TAB2 有 2 列:ID int(10) unsigned NOT NULL AUTOINCREMENT 和 FK int(10) unsigned NOT NULL。

我可以使用“ON DELETE RESTRICT”从表 TAB2 中的列 FK 在 TAB1 中的列 ID 上创建外键。

但我无法使用“ON DELETE CASCADE”或“ON DELETE SET NULL”创建这样的键。错误是“#1215 - 无法添加外键约束”。

我尝试过使用signed、NULL、int(4)...等。不要不明白错误出在哪里。

<小时/>

我一个月前设法用 CASCADE 创建的唯一外键 (tcfkowner) 位于表 tcalendar ADD REFERENCES tuser (tcid) >).

我不明白,DELETE CASCADE 意味着如果我删除用户,日历中指向该用户的行也将被删除。

相反,外键似乎限制了对其父级的删除:我无法删除 TABLE tuser 中由 FOREIGN KEY(tcfkowner) 从 TABLE 指向的任何行tcalendar 。错误信息:

” MySQL 说:文档

1451 - 无法删除或更新父行:外键约束失败 (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;

关于mysql - 1) 无法在 DELETE SET NULL 或 ON DELETE CASCADE 上创建外键 2) 无法在 DELETE CASCADE 上创建外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21311232/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com