sql-server - 从给定表动态构建外键图查询

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

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

最佳答案

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

关于sql-server - 从给定表动态构建外键图查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11113176/

相关文章:

java - Windows 客户端与 Web 客户端

sql-server-2008 - 如果我禁用正在运行的作业,它会停止作业吗?

c# - 如何使用 C#、Entity Framework 和 SQL Server 2008 读取/写入地理数据?

arrays - 如何将表转换为 Json 数组?

sql-server - 在一个查询中对同一个表进行多个 COUNT SELECT

SQL Server 更新时间戳列

SQL 替换字段中的所有单词实例

sql - 表中的隐式 ORDER BY 顺序

sql - SQL中的GO语句是什么意思

sql-server - SQL Server like语句问题