我有一张桌子,我们称之为Users
。此表具有名为Id
的主键。尽管将Id
作为主键(唯一聚簇),但它在同一列(Id
)上具有其他索引(唯一的非聚簇)。
我想删除此约束,但是外键引用了这个唯一的非聚簇索引,并且出现The constraint ... is being referenced by table...
错误。
删除此类索引的最佳方法是什么?您是否有任何脚本可以删除,执行某些操作,并在特定表中的特定列上重新创建外键?有很多外键,所以如果我能自动完成它会很好。我可以使用INFORMATION_SCHEMA和其他系统对象来提取有关这些键的信息,但我不想写,已经写过或者可以用其他方式完成。
答案 0 :(得分:3)
为了删除外键引用的非聚簇索引,必须先删除外键约束。
查看SQL Server Central上的海报中提供的以下文档。他们可能需要对您的“确切”要求进行一些调整,但是它们提供了编写脚本然后重建外键的基础。
答案 1 :(得分:1)
双指数方法有意义:
要删除第二个索引,您必须先删除所有引用它的外键。以下是the script我用来放弃&的链接重新创建外键。