Sql server 嵌套sql语句

Sql server 嵌套sql语句,sql-server,Sql Server,我有一个自联接表,当我删除或更新它的id时,我想删除或更新所有直接和间接受影响的记录 SQL server不允许这种类型的循环级联我已决定使用触发器,但此触发器将递归归档,并在34级终止,我不知道记录和事件的深度我禁用触发器并在完成此过程后重新启用它如何构造实现此目的的SQL语句逻辑?对于此类数据,应使用类似嵌套集的构造: 编辑:好的,对于循环引用,您将遇到一个问题。。。但是,根据您的数据,它仍然可能有所帮助?因为您的表有循环引用,常规SQL语句是不够的。相反,您可以使用以下方法编写SQL: 为

我有一个自联接表,当我删除或更新它的id时,我想删除或更新所有直接和间接受影响的记录
SQL server不允许这种类型的循环级联我已决定使用触发器,但此触发器将递归归档,并在34级终止,我不知道记录和事件的深度我禁用触发器并在完成此过程后重新启用它如何构造实现此目的的SQL语句逻辑?

对于此类数据,应使用类似嵌套集的构造:


编辑:好的,对于循环引用,您将遇到一个问题。。。但是,根据您的数据,它仍然可能有所帮助?

因为您的表有循环引用,常规SQL语句是不够的。相反,您可以使用以下方法编写SQL:

  • 为要处理的ID创建临时表
  • 创建一个SQL查询,将引用的ID插入临时表。确保不插入重复项
  • 将查询放入循环中,并使用计数器确定是否已添加记录。如果没有添加额外的记录,则退出循环
  • 创建使用临时表中ID的update语句
  • 放下临时表

  • 来吧。。。请留下评论。您的父子关系引用深度超过34级?或者您的关系中是否有循环引用?是的,我有循环引用,这就是为什么sql server不允许设置关系argh-标点符号的级联删除或更新属性的原因!读这么长的句子真是费劲。