如何删除我想介绍的外键失败的行

时间:2011-06-06 09:54:27

标签: sql sql-server sql-server-2008 foreign-keys

在给定的SQL Server 2008表中,我有一个应该启用的禁用外键约束。我无法启用此约束,因为此表中的行与此外键冲突。这些行无效。

是否有一个简单的技巧可以删除与此约束冲突的数据?

3 个答案:

答案 0 :(得分:2)

这是一种方法

SQL脚本

BEGIN TRAN

DELETE FROM Detail    
OUTPUT DELETED.*  -- Verification
FROM   Detail d
       LEFT OUTER JOIN Master m ON m.PK = d.FK
WHERE  m.PK IS NULL

ROLLBACK TRAN -- Change to commit when verified.

答案 1 :(得分:1)

你必须手动删除所有不遵守约束的行:可能你需要一个T-SQL语句来获取你需要删除的所有行(可能使用外连接)然后删除它们

答案 2 :(得分:0)

您可以使用此查询识别违规数据:

DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS