在给定的SQL Server 2008表中,我有一个应该启用的禁用外键约束。我无法启用此约束,因为此表中有与此外键冲突的行。这些行是无效的。如何删除我想要引入的外键失败的行
是否有一个简单的技巧,可以删除与此约束冲突的数据?
在给定的SQL Server 2008表中,我有一个应该启用的禁用外键约束。我无法启用此约束,因为此表中有与此外键冲突的行。这些行是无效的。如何删除我想要引入的外键失败的行
是否有一个简单的技巧,可以删除与此约束冲突的数据?
您必须手动删除不尊重约束所有的行的一种方法:可能是你需要一个T- SQL语句以获取需要删除的所有行(可能使用外连接),然后删除它们
我试过这个,但是FK有点复杂。我正在寻找不同的方法。 – 2011-06-06 10:07:05
你必须自己动手。看看下面的链接 http://stackoverflow.com/questions/3312876/elegant-way-to-delete-rows-which-are-not-referenced-by-other-table – 2011-06-06 10:13:58
这将是做
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.
您可以使用此查询识别违规数据:
DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS
没有,那没有做的伎俩 – 2011-06-06 11:03:00
因为你没有回复我的回答,究竟是什么错误呢? – 2011-06-06 11:19:37