从给定的表动态构建外键图查询

时间:2012-06-20 05:11:39

标签: sql-server sql-server-2008 tsql sql-server-2008-r2 cascading-deletes

我目前有删除问题。我们无权在记录上启用Cascade删除。我有User表,其中userId是大约20个不同的表中的引用。我希望能够编写一个动态查询,该查询将以递归方式查找引用userId的所有表并删除它们(对于每个表,它必须找到自己的外键并删除它们),所以基本上是一个递归函数/将表名作为参数和主键id并将执行级联删除的过程。任何可以做到这一点的脚本?我可以在information_schema上运行一个查询来检索User表的一个级别的依赖项,但我需要以某种方式递归地查找链接表的所有依赖项,以便能够擦除记录。

1 个答案:

答案 0 :(得分:1)

根据“Nathan Skerl”的建议,我使用了这个链接http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=97454并完成了这项工作。唯一的事情是我修改了fnCascadingDelete函数以包含RecordID参数,因此您可以传递要删除的记录的id,然后我搜索%1并将其替换为@RecordID。它工作得很好,非常深的嵌套有点慢,但我想这是预期的。