【问题标题】:SQL Server - Change clustered index without dropping primary key?SQL Server - 在不删除主键的情况下更改聚集索引?
【发布时间】:2019-12-22 11:03:23
【问题描述】:

我想将表上的聚集索引更改为主键以外的列组合。

如何删除聚集索引,保留我拥有的相同主键,并在一组新列上添加新的聚集索引。

最终结果 - 非聚集索引 PK,新列集上的聚集索引。

【问题讨论】:

    标签: sql-server tsql clustered-index


    【解决方案1】:

    您可以这样做的唯一方法是:

    1) 首先使用以下代码删除约束:

    ALTER TABLE TABLENAME DROP CONSTRAINT ConstrainName
    

    2) 然后使用以下代码在您想要的列上创建聚集索引:

    Create clustered index Index_Name on TableName (column1,column2)
    

    3) 在列上创建主键:

    ALTER TABLE TableName
    ADD CONSTRAINT constraint_name PRIMARY KEY (ColumnName);
    

    【讨论】:

    • (我假设您的“首先删除约束”是关于外键引用的。)请注意,表只能有一个聚集索引。您必须先删除原始聚集索引,然后再创建另一个。
    • 在第一步中……那是 PK 的约束吗?所以我要放弃PK?因为在第三步中你设置了 PK。
    • 是的,在第 1 步中我们需要删除 PK,在第 3 步中我们正在重新创建它
    猜你喜欢
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 2023-03-26
    相关资源
    最近更新 更多