【发布时间】:2014-02-14 04:21:31
【问题描述】:
我无法在 DELETE CASCADE ON UPDATE CASCADE 上添加外键约束。
我使用两个简单的表格。
TAB1 有 2 列:ID int(10) unsigned NOT NULL AUTOINCREMENT,数据 int(10) unsigned NOT NULL。
TAB2 有 2 列: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)...等。不要不明白错误在哪里。
我在一个月前设法用 CASCADE 创建的唯一外键(tcfkowner)在表 tcalendar 添加参考 tuser(tcid)中。
我不明白 DELETE CASCADE 意味着如果我删除用户,日历中指向该用户的行也将被删除。
相反,外键似乎限制了其父级的删除:我无法删除 TABLE tuser 中的任何行,该行由 TABLE tcalendar 中的 FOREIGN KEY(tcfkowner) 指向。错误信息:
" MySQL 说:文档
1451 - 无法删除或更新父行:外键约束失败 (gintare_calendar.tcalendar, CONSTRAINT tcalendar_ibfk_1 FOREIGN KEY (tcfkowner) REFERENCES tuser (tcid)) "。
【问题讨论】:
标签: mysql foreign-keys cascade