【问题标题】:Unable to drop constraint in SQL server 2005, "Could not drop constraint. See previous errors"无法在 SQL Server 2005 中删除约束,“无法删除约束。请参阅以前的错误”
【发布时间】:2011-02-05 06:49:51
【问题描述】:

我正在尝试删除数据库表上的约束,例如:

ALTER TABLE MyTable drop CONSTRAINT FK_MyTable_AnotherTable

但执行只是运行并运行。如果我停止它,我会看到:

Msg 3727, Level 16, State 0, Line 2
Could not drop constraint. See previous errors.

网络搜索会弹出各种页面,但请注意该约束已正确命名,我正在尝试使用正确的名称将其删除

【问题讨论】:

    标签: sql sql-server constraints alter-table


    【解决方案1】:

    我在 SQL Server 2008 R2 上遇到了同样的问题,我用下面一行解决了我的问题,希望它也适用于其他人 :)

        Alter Table [Table Name]
        DROP Column [Column Name]
    

    【讨论】:

    • 我可以知道给我 ans -1 的原因吗?如果你纠正我,我会很高兴。
    • 我希望您已经找到了原因的答案。我不认为线程所有者想要删除任何列,他只想删除外键(可能会更改列定义)
    【解决方案2】:

    找到了一种对此进行排序的方法,尽管我不明白为什么它是必要的。

    已经能够通过首先禁用它来删除约束:

    ALTER MyTable NOCHECK CONSTRAINT FK_MyTable_AnotherTable
    

    然后drop就完成了

    仍然欢迎任何 cmet 说明为什么这样做是必要的

    【讨论】:

    • 我想删除一个既不是主键也不是外键的列,我遇到了同样的错误,我尝试了你的解决方案,但它没有用。有什么想法吗?
    【解决方案3】:

    确认您尚未放弃约束,例如:

    SELECT OBJECT_ID('FK_MyTable_AnotherTable')
    

    如果返回 null,则您的约束不再存在。这将解释错误消息。

    【讨论】:

    • 不,约束还没有被删除,我已经尝试过你的方法以及其他方法,它肯定仍然存在。它还会阻止我删除相关的列
    • @DannykPowell:object_id('FK_MyTable_AnotherTable','F') 显示什么?
    • 查看我的答案,首先通过禁用约束进行排序-感谢您的回答@Andomar
    【解决方案4】:

    我有同样的问题。

    原因是我在游标语句中犯了一个错误,它重复了一些我要放弃的约束。 因此,当约束实际上在同一个事务中删除时,就会发生此错误。然后我做了一个回滚并检查它是否存在:它确实存在(当然,在回滚之后!)。

    在掉落的那一刻检查它是否真的存在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      • 1970-01-01
      • 2011-12-29
      • 1970-01-01
      相关资源
      最近更新 更多