是否可以将child
删除parent
行的级联删除应用于此MySQL架构?
CREATE TABLE parent (
id INTEGER,
specialChildrenId INTEGER,
PRIMARY KEY (id)
)
-- Always 1:1 related to whatever references it
-- (not necessarily referenced by parent)
CREATE TABLE child (
id INTEGER,
PRIMARY KEY (id)
)
我无法将child
中的引用添加到parent
,因为在我的应用中,child
可以是1:1与parent
或1:1相关与另一个完全不同的表有关。
答案 0 :(得分:1)
您可以在两个(或更多)父表上添加触发器,以便在删除之前删除子行,如下所示:
location:1
答案 1 :(得分:0)
作为一种好的做法,您应该始终将外键放在子表中,如果它对另一个表的引用,则添加另一个外键。在这种情况下,您的删除查询将如下所示:
delete from child where parent_id=#{parentId}
但在您的情况下,您必须使用此查询:
delete from child where id=
(select specialChildrenId from parent where id=#{parentId})