代码之家  ›  专栏  ›  技术社区  ›  LukLed

如何删除外键引用的唯一索引?

  •  3
  • LukLed  · 技术社区  · 15 年前

    我有张桌子,我们就叫它 Users . 此表具有调用的主键 Id . 尽管有 身份证件 作为主键(唯一聚集),它在同一列上具有其他索引(唯一非聚集)( 身份证件 )

    我想删除这个约束,但是外键引用了这个唯一的非聚集索引,我得到 The constraint ... is being referenced by table... 错误。

    删除此类索引的最佳方法是什么?是否有任何脚本可以删除、执行某些操作并在特定表中的特定列上重新创建外键?有很多外国钥匙,所以如果我能自动做的话那就太好了。我可以使用Information_模式和其他系统对象来提取关于这些键的信息,但是我不想写,已经写了什么或者可以用其他方式做什么。

    2 回复  |  直到 15 年前
        1
  •  3
  •   John Sansom    15 年前

    若要删除外键引用的非聚集索引,必须首先删除外键约束。

    请看一下SQL Server Central上的海报中提供的以下脚本。它们可能需要对您的“精确”需求进行一些调整,但是它们为编写脚本和随后重建外键提供了基础。

    Scrip out Foreign Keys

        2
  •  1
  •   Community holdenweb    7 年前

    这两种指数方法是有意义的:

    • 第二个索引可能比聚集索引小得多,并且更容易装入内存。
    • 第二个索引可能包括对特定查询有利的列选择。

    为了删除第二个索引,您必须先删除引用它的所有外键。这里有一个链接指向 the script 我用于删除和重新创建外键。