繁体   English   中英

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

[英]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 )参考tusertcid ))”。

主表和明细表中的两个字段必须相同。 首先检查一下。

尝试使用此脚本创建表并添加外键-

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM