sql - 从具有多个外键的表中删除

标签 sql sql-server-2008 t-sql cascading-deletes

目前我正在一个具有树状结构的数据库中工作。基本上有一个顶级表,大约有 10 个表在该表上有外键。这些表中的每一个都有另外 10 个带有外键约束的表。现在我的目标是从主表中删除一些记录,并删除子表、孙子表等。当然,外键使这成为一项艰巨的任务。

我搜索了一下,发现检查了这个question关于使用级联删除,我想如果我只处理几个表,这会起作用。然而,在我目前的设置下,将 100 多个表一一更改仍然不太愉快。

因此我想问当涉及很多表时是否有一种简单的方法可以删除具有外键的值。

由于我对相对较小的数据库有一定的控制权,因此查询效率和值被其他人删除的风险并不是真正的问题。因此,对所有表应用级联删除可能很容易,但我也愿意接受完全不同的解决方案(在 microsoft server studio 2008 中使用 T-SQL)。

最佳答案

你看过这个吗?这家伙正在根据数据库中的外键关系自动生成删除语句:

Generate Delete Statement From Foreign Key Relationships in SQL 2008?

我个人并不是它的忠实粉丝,但这是值得尝试的事情。

关于sql - 从具有多个外键的表中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14484081/

相关文章:

mysql - 如何在 sql server 的行中显示 sql 标题列

sql - 如何执行插入查询,其中参数的数据来自选择查询的结果集

sql - 具有不同 ORDER BY 的 PostgreSQL DISTINCT ON

sql - 将两个带有动态行标题的交叉表合并为一个

sql - 转换失败 (SQL Server 2008)

sql - 通过完整外连接查找多个字段的最小日期

sql-server - 如何将 nvarchar 解码为文本(SQL Server 2008 R2)?

sql-server-2008 - 使用 PIVOT SQL Server 2008 时更改列名

表中每一列的 SQL 循环

sql-server - 如何使用 T-SQL 删除列中不需要的子字符串