【问题标题】:How to drop a constraint如何删除约束
【发布时间】:2014-07-14 11:36:50
【问题描述】:

使用 SQL Server 2008

Table1 有一个名为 idx_u_customerinfo 的约束。

我直接删除了table1(右键删除),我写了一个脚本来创建具有相同约束名称idx_u_customerinfo的table1。

我遇到了一个错误

数据库中已经有一个名为“idx_u_customerinfo”的对象。

我需要删除约束名,怎么做?

【问题讨论】:

  • delete 仅从表中删除行。它不会删除表。
  • 运行时得到什么:SELECT Name, type_desc FROM sys.objects WHERE name = N'idx_u_customerinfo'
  • 如果你正在编写一个脚本来创建表并且索引为表部分运行它然后删除索引,当你删除表时记得在表之前删除索引。

标签: sql sql-server sql-server-2008r2-express


【解决方案1】:

ALTER TABLE "table_name" DROP [CONSTRAINT|INDEX] "CONSTRAINT_NAME";

比如: ALTER TABLE table1 DROP CONSTRAINT idx_u_customerinfo;

【讨论】:

  • 我已经删除了表,但是仍然显示约束名称
  • 约束已保存,您是否尝试再次创建 table1 只是为了删除约束?
【解决方案2】:

要么您实际上没有删除table1,要么索引idx_u_customerinfo 存在于另一个表中。您不能在同一个数据库中拥有两个具有相同索引名称的表,因此最好将表名称合并到索引名称中,例如idx_table1_customerinfo.

这应该为您提供有关此索引的所有信息,以确定下一步要做什么

SELECT tbl.name, idx.name, idx.type_desc
FROM sys.objects idx 
JOIN sys.objects tbl ON idx.parent_object_id = tbl.object_id
WHERE idx.name = N'idx_u_customerinfo'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 2020-09-20
    • 2014-04-16
    • 2023-03-11
    • 2012-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多