【发布时间】:2012-06-20 05:11:39
【问题描述】:
我目前有一个删除问题。我们无权对记录启用级联删除。我有用户表,其中 userId 是大约 20 个不同表中的引用。我希望能够编写一个动态查询,它将递归查找所有引用 userId 的表并删除这些表(对于每个表,它必须找到自己的外键并删除它们),所以基本上是一个递归函数/程序将表名作为参数和主键 id 并将执行级联删除。任何脚本可以做到这一点?我可以在 information_schema 上运行查询以检索 User 表的一级依赖关系,但我需要以某种方式递归查找链接表的所有依赖关系才能擦除记录。
【问题讨论】:
-
不完全这样做 - 它似乎删除了所有内容。以正确的顺序,但一切仍然如此。我也可以真正使用这样的脚本;我想我今晚回家后会解决这个问题,如果在那之前有人没有给出答案。我的方法是通过 PK/Table 识别记录,通过 FK 递归依赖关系,然后从最后一条记录向上删除记录。有趣的挑战...
-
我错了。它确实有效。只需将
%1替换为您要删除的密钥即可。然而,它确实看起来很啰嗦。但如果它有效,为什么要修复它? -
@Peter - 我正在创建自己的,我会尝试一下,看看它是否有效。
标签: sql-server sql-server-2008 tsql sql-server-2008-r2 cascading-deletes