Sql 无法删除唯一约束

Sql 无法删除唯一约束,sql,sql-server,sql-server-2008,sql-server-2005,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 U

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

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不是约束条件。无法删除约束。请参阅前面的错误。我该如何解决这个问题


谢谢。

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

使用此查询

DROP INDEX Index_Name
ON Schema.Table_Name
唯一约束在幕后创建唯一的非聚集索引,以强制该列的唯一性

此外,如果您需要在插入后再次创建此索引,您可以简单地禁用它,并且一旦您完成了想要执行的操作,您可以在以后启用它

像这样的

ALTER INDEX [Index_Name] ON Schema.Table_Name DISABLE
GO

/* Do your Stuff here  */

ALTER INDEX [Index_Name] ON Schema.Table_Name REBUILD
GO

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

使用此查询

DROP INDEX Index_Name
ON Schema.Table_Name
唯一约束在幕后创建唯一的非聚集索引,以强制该列的唯一性

此外,如果您需要在插入后再次创建此索引,您可以简单地禁用它,并且一旦您完成了想要执行的操作,您可以在以后启用它

像这样的

ALTER INDEX [Index_Name] ON Schema.Table_Name DISABLE
GO

/* Do your Stuff here  */

ALTER INDEX [Index_Name] ON Schema.Table_Name REBUILD
GO

要查看可以使用的约束列表,请执行以下操作:

show create table table_name;
现在要删除所需的唯一键:

alter table table_name drop key name_of_unique_key;

要查看可以使用的约束列表,请执行以下操作:

show create table table_name;
现在要删除所需的唯一键:

alter table table_name drop key name_of_unique_key;

我认为这是一个索引,而不是一个约束。您可能必须删除索引,然后重新创建它,而不使其唯一。我认为它是一个索引,而不是一个约束。您可能必须删除索引,然后重新创建它,而不使其唯一。