【发布时间】:2011-06-06 09:54:27
【问题描述】:
在给定的 SQL Server 2008 表中,我有一个应该启用的禁用外键约束。我无法启用此约束,因为此表中有与此外键冲突的行。这些行无效。
是否有一个简单的技巧可以删除与此约束冲突的数据?
【问题讨论】:
-
因为你没有回复我的回答,到底是哪里出了问题?
标签: sql sql-server sql-server-2008 foreign-keys
在给定的 SQL Server 2008 表中,我有一个应该启用的禁用外键约束。我无法启用此约束,因为此表中有与此外键冲突的行。这些行无效。
是否有一个简单的技巧可以删除与此约束冲突的数据?
【问题讨论】:
标签: sql sql-server sql-server-2008 foreign-keys
这是一种方法
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.
【讨论】:
您必须手动删除所有不遵守约束的行:可能您需要一个 T-SQL 语句来获取您需要删除的所有行(可能使用外连接)然后删除它们
【讨论】:
您可以使用此查询识别违规数据:
DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS
【讨论】: