Sql 关于怪异行为

Sql 关于怪异行为,sql,azure-sql-database,Sql,Azure Sql Database,我在Azure SQL的可视化编辑器中尝试了这一点,SQL并不是我最擅长的技能 带有2个表的简单数据库 Table Person with just id. Table Hating with id, hater, target. Hating.hater和Hating.target都是必需的,都是Person.id 两者都有删除级联 因此本质上是人与人之间的多对多关系,如果删除了发起人或目标,则打算删除该关系 但是,如果两个外键都处于级联状态,则这将不起作用。如果只有另一个很好,但如果两者都

我在Azure SQL的可视化编辑器中尝试了这一点,SQL并不是我最擅长的技能

带有2个表的简单数据库

Table Person with just id.
Table Hating with id, hater, target.
Hating.hater
Hating.target
都是必需的,都是
Person.id
两者都有删除级联

因此本质上是人与人之间的多对多关系,如果删除了发起人或目标,则打算删除该关系

但是,如果两个外键都处于级联状态,则这将不起作用。如果只有另一个很好,但如果两者都是,则不起作用


这是SQL中的一些限制吗?是否有一种方法可以完成我试图做的事情?

同一个表中不能有两个级联键。但是,你可以用一个触发器来帮你完成这项工作。因此,不要使用两个级联键,而是在person表中添加一个触发器(未测试,但这里有一个想法):


好的,谢谢。我希望我能用瀑布来处理这件事,但显然不行。
    CREATE TRIGGER T_PERSON_CASCADE ON Person FOR DELETE AS

    DELETE FROM Hating WHERE hater IN (SELECT id FROM deleted) OR target IN (SELECT id FROM deleted)

    END