嵌套的sql语句

时间:2010-05-04 09:15:41

标签: sql-server

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

2 个答案:

答案 0 :(得分:2)

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

  1. 为要处理的ID创建临时表。
  2. 创建一个SQL查询,将引用的ID插入临时表中。确保不要插入重复项。
  3. 将查询置于循环中并使用计数器确定是否已添加记录。如果没有添加额外记录,请退出循环。
  4. 创建使用临时表中的ID的更新语句。
  5. 删除临时表。

答案 1 :(得分:1)

您应该为这类数据使用类似嵌套集的构造:http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

编辑:好的,通过循环引用你会遇到问题......但是根据你的数据,它仍然有帮助吗?