Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server关系表父级->;子循环级联_Sql_Sql Server_Sql Server 2012 - Fatal编程技术网

SQL Server关系表父级->;子循环级联

SQL Server关系表父级->;子循环级联,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我有一个sql表(我们称之为Person),例如: 餐桌上的人 Id Firstname Lastname 我想让关系成为这个人的一部分(父/子关系),所以我构建了另一个表(我们称之为person\u relation),如下所示: 表Person\u关系 Id_person_parent Id_person_child 我做了一个约束以避免parent=child的情况(这会很尴尬!),现在我尝试将外键设置为table Person和table Person_关系。我目前可以设置一

我有一个sql表(我们称之为Person),例如:

餐桌上的人

Id  Firstname  Lastname
我想让关系成为这个人的一部分(父/子关系),所以我构建了另一个表(我们称之为person\u relation),如下所示:

表Person\u关系

Id_person_parent   Id_person_child
我做了一个约束以避免parent=child的情况(这会很尴尬!),现在我尝试将外键设置为table Person和table Person_关系。我目前可以设置一个外键,但当我尝试设置第二个外键时,我得到一个:可能会导致循环或多个级联路径错误

知道我会保留'Delete cascade'在删除个人条目时自动删除个人关系表中的链接,有没有干净的解决方案


提前感谢。

SQL Server不允许您创建理论上可能冲突的多个级联路径。欲了解更多信息

仍然实现目标的一种方法是使用触发器代替带有级联操作的外键

CREATE TRIGGER dbo.Person_Delete
ON dbo.Person
FOR DELETE
AS
  DELETE dbo.Person_Relation 
  WHERE Id_person_parent IN (SELECT Id FROM deleted)
    OR Id_person_child IN (SELECT Id FROM deleted);