在给定的SQL Server 2008表中,我有一个应该启用的禁用外键约束。我无法启用此约束,因为此表中的行与此外键冲突。这些行无效。
是否有一个简单的技巧可以删除与此约束冲突的数据?
答案 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