【问题标题】:How to delete rows that fail a foreign key i want to introduce如何删除我想介绍的外键失败的行
【发布时间】:2011-06-06 09:54:27
【问题描述】:

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

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

【问题讨论】:

  • 因为你没有回复我的回答,到底是哪里出了问题?

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


【解决方案1】:

这是一种方法

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.

【讨论】:

    【解决方案2】:

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

    【讨论】:

    【解决方案3】:

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

    DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS
    

    【讨论】:

      猜你喜欢
      • 2018-07-18
      • 2021-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-21
      • 2017-06-11
      • 1970-01-01
      相关资源
      最近更新 更多