2011-06-06 27 views
1

在给定的SQL Server 2008表中,我有一个应该启用的禁用外键约束。我无法启用此约束,因为此表中有与此外键冲突的行。这些行是无效的。如何删除我想要引入的外键失败的行

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

+0

因为你没有回复我的回答,究竟是什么错误呢? – 2011-06-06 11:19:37

回答

1

您必须手动删除不尊重约束所有的行的一种方法:可能是你需要一个T- SQL语句以获取需要删除的所有行(可能使用外连接),然后删除它们

+0

我试过这个,但是FK有点复杂。我正在寻找不同的方法。 – 2011-06-06 10:07:05

+0

你必须自己动手。看看下面的链接 http://stackoverflow.com/questions/3312876/elegant-way-to-delete-rows-which-are-not-referenced-by-other-table – 2011-06-06 10:13:58

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. 
0

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

DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS 
+0

没有,那没有做的伎俩 – 2011-06-06 11:03:00