无法删除UNIQUE约束

时间:2014-02-26 21:57:33

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

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

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

我在此查询返回的name列中注明了我的表上的唯一约束的名称。其中一个约束名称是UNIQ_YourTableName_01。

要删除该约束,我使用了 -

ALTER TABLE YourTableName
DROP CONSTRAINT UNIQ_YourTableName_01

我收到错误 - UNIQ_YourTableName_01不是约束。无法删除约束。查看以前的错误。我该如何解决 ?

感谢。

2 个答案:

答案 0 :(得分:3)

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

使用此查询

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

答案 1 :(得分:0)

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

show create table table_name;

现在删除所需的唯一键:

alter table table_name drop key name_of_unique_key;