无法删除 UNIQUE 约束

Ste*_*eam 3 sql sql-server sql-server-2005 sql-server-2008

我想删除桌子上的一些限制。因此,首先我必须找出约束的名称,然后查看要删除哪些约束。对于第一个任务,我使用了查询 -

SELECT * 
FROM sys.indexes 
WHERE object_id = OBJECT_ID('YourTableName')
Run Code Online (Sandbox Code Playgroud)

我从该查询返回的名称列中记下了表上唯一约束的名称。约束名称之一是 UNIQ_YourTableName_01。

为了放弃这个限制,我使用了 -

ALTER TABLE YourTableName
DROP CONSTRAINT UNIQ_YourTableName_01
Run Code Online (Sandbox Code Playgroud)

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

谢谢。

M.A*_*Ali 5

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

使用此查询

DROP INDEX Index_Name
ON Schema.Table_Name
Run Code Online (Sandbox Code Playgroud)

唯一约束会Unique Non-Clustered 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
Run Code Online (Sandbox Code Playgroud)