我想在表格上删除一些约束。所以,首先我必须找出约束的名称,然后看看我想要删除哪些。对于第一项任务,我使用了查询 -
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不是约束。无法删除约束。查看以前的错误。我该如何解决 ?
感谢。
答案 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;