Kar*_*ski 9 sql t-sql indexing sql-server-2008
我不能删除索引,因为有些表将它用于外键
消息3723,级别16,状态6,行1索引'tbl1.ix_cox'上不允许显式DROP INDEX.它用于FOREIGN KEY约束实施.
我试图在丢弃之前先禁用索引
ALTER INDEX ix_cox On tbl1
DISABLE
Go
Run Code Online (Sandbox Code Playgroud)
但仍然无法放弃它.
我真的需要删除那些使用该索引的表上的外键吗?因为它大约有30张桌子.
小智 12
如果创建索引定义PRIMARY KEY或UNIQUE约束(https://docs.microsoft.com/en-us/sql/t-sql/statements/drop-index-transact-sql?),您将获得相同的异常. view = sql-server-2017).
在这种情况下,简单的解决方案是使用ALTER-TABLE命令:
ALTER TABLE tbl1 DROP CONSTRAINT ix_cox
Run Code Online (Sandbox Code Playgroud)
您可以暂时禁用 FK 约束 -> 删除索引 -> 重新启用约束,例如
ALTER TABLE your_fk_table NOCHECK CONSTRAINT constraint_name
drop index ids_name
ALTER TABLE your_fk_table CHECK CONSTRAINT constraint_name
Run Code Online (Sandbox Code Playgroud)