【问题标题】:How to change the primary key to be non-clustered?如何将主键更改为非集群?
【发布时间】:2011-02-05 23:05:13
【问题描述】:

在这里兼职不情愿的 DBA。我想将现有的主键索引从聚集更改为非聚集。语法正在逃避我。

这就是现在的脚本。

ALTER TABLE [dbo].[Config] WITH NOCHECK ADD 
    CONSTRAINT [PK_Config] PRIMARY KEY  CLUSTERED 
    (
        [ConfigID]
    )  ON [PRIMARY] 

我在在线文档中没有看到 ALTER CONSTRAINT 语句。

【问题讨论】:

    标签: sql sql-server-2005 clustered-index alter


    【解决方案1】:

    删除聚集索引,然后将主键重新创建为非聚集索引:

    ALTER TABLE dbo.Config DROP CONSTRAINT PK_Config
    go
    ALTER TABLE dbo.Config ADD CONSTRAINT PK_Config 
        PRIMARY KEY NONCLUSTERED (ConfigID)
    

    【讨论】:

    • 我知道这是一篇旧文章,但有趣的是,如果索引与主键一起使用并且它已经被另一个表引用,你不会能够删除它。 (至少在 MS SQL Server 中)
    • @Bruno 如果索引与主键一起使用并且已被 MSSQL 中的另一个表引用,是否有替代方法将主键更改为非聚集。
    • @KavyaShetty 是的,使用来自stackoverflow.com/questions/483193/… 的答案来识别引用的 fkey。这是为了禁用它们(但在答案中选择一种选择性方法而不是“全部”方法)stackoverflow.com/questions/159038/… 当您重新打开 pkey 时重新启用...那里的一位评论者也有用地记录了检查触发器!
    猜你喜欢
    • 2011-01-18
    • 2011-01-09
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多