【问题标题】:Unable to drop UNIQUE constraint无法删除 UNIQUE 约束
【发布时间】:2014-02-26 21:57:33
【问题描述】:

我想在表格上删除一些约束。所以,首先我必须找出约束的名称,然后看看我想删除哪些。对于第一个任务,我使用了查询 -

SELECT * 
FROM sys.indexes 
WHERE object_id = OBJECT_ID('YourTableName')

我从该查询返回的名称列中注意到我的表上的唯一约束的名称。约束名称之一是 UNIQ_YourTableName_01。

为了放弃该约束,我使用了 -

ALTER TABLE YourTableName
DROP CONSTRAINT UNIQ_YourTableName_01

我收到一个错误 - UNIQ_YourTableName_01 不是约束。无法删除约束。请参阅以前的错误。我该如何解决 ?

谢谢。

【问题讨论】:

  • 我认为这是一个索引,而不是一个约束。您可能必须 DROP INDEX 然后重新创建它,而不是使其成为 UNIQUE。

标签: sql sql-server sql-server-2008 sql-server-2005


【解决方案1】:

您的查询将返回您需要删除为唯一约束创建的索引的索引名称

使用这个查询

DROP INDEX Index_Name
ON Schema.Table_Name

一个独特的约束在幕后创建一个Unique Non-Clustered Index 以强制该列的唯一性。

此外,如果您需要在插入后再次创建此 INDEX,您可以简单地禁用它,一旦您完成了您想做的任何事情,您可以在之后启用它。

这样的……

ALTER INDEX [Index_Name] ON Schema.Table_Name DISABLE
GO

/* Do your Stuff here  */

ALTER INDEX [Index_Name] ON Schema.Table_Name REBUILD
GO

【讨论】:

    【解决方案2】:

    要查看您可以使用的约束列表:

    show create table table_name;
    

    现在删除所需的唯一键:

    alter table table_name drop key name_of_unique_key;
    

    【讨论】:

      猜你喜欢
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      • 1970-01-01
      • 2018-11-17
      • 1970-01-01
      • 2011-02-05
      • 2021-12-09
      相关资源
      最近更新 更多