【发布时间】:2014-09-07 19:01:05
【问题描述】:
我无法删除索引,因为某些表将它用作外键
消息 3723,级别 16,状态 6,第 1 行 允许在索引“tbl1.ix_cox”上。它被用于 FOREIGN KEY 约束执行。
我尝试在删除之前先禁用索引
ALTER INDEX ix_cox On tbl1
DISABLE
Go
但还是放不下。
我真的需要删除那些使用该索引的表上的外键吗?因为它大约有 30 张桌子。
【问题讨论】:
-
创建您的索引是为了优化和强制执行主键或唯一键。可以创建与这些列相关的另一个表中的外键,因为存在此主键或唯一状态表明列值是唯一的并且正确标识表中的 1 行。删除索引会破坏这种一致性,因此您别无选择,只能先删除相关的外键,然后再删除索引。出于同样的原因,在您建立另一个主键或唯一主键之前,您将无法重新创建其他外键。
-
有点晚了,但请看下面我的 vwFK 视图,以便轻松生成处理大量引用外键的表所需的脚本。
-
这个问题的答案可能有助于找到所有外键在哪里(如果你不确定)stackoverflow.com/questions/18707037/…
标签: sql sql-server-2008 tsql indexing