我有 3 张桌子。最后两个表在同一字段上具有第一个表的外键。两个外键都设置为 UPDATE CASCADE、DELETE CASCADE。当我删除第二个表中的子行时,第一个表中的父行保持不变。但是当我在第三个表中删除一个子行时,表中的第一行被删除了!
外键不应该与两个女儿的行为方式相同?
我有 3 张桌子。最后两个表在同一字段上具有第一个表的外键。两个外键都设置为 UPDATE CASCADE、DELETE CASCADE。当我删除第二个表中的子行时,第一个表中的父行保持不变。但是当我在第三个表中删除一个子行时,表中的第一行被删除了!
外键不应该与两个女儿的行为方式相同?
我的猜测是表 2 使用 MyISAM 表(不支持外键),而其他两个表使用 InnoDB 引擎(支持外键)。
从文档中:
外键关系涉及一个包含中心数据值的父表,以及一个具有相同值的子表,它们指向其父表。FOREIGN KEY 子句在子表中指定。父表和子表必须都是 InnoDB 表。它们不能是 TEMPORARY 表。