用于创建群集主键的SQL Server语法

Ian*_*oyd 5 sql-server sql-server-2008-r2

我想将表移动到新的文件组.使用接受的答案作为起点:

CREATE CLUSTERED INDEX CIX_YourTable
   ON dbo.YourTable(YourClusteringKeyFields)
   WITH DROP_EXISTING
   ON [filegroup_name]
Run Code Online (Sandbox Code Playgroud)

我适应我的用途:

CREATE CLUSTERED INDEX PK_AuditLog_AuditLogID
   ON dbo.AuditLog(AuditLogID)
   WITH DROP_EXISTING
   ON [TheOtherFileGroup]
Run Code Online (Sandbox Code Playgroud)

给出错误:

消息1907,级别16,状态1,行1
无法重新创建索引'PK_AuditLog_AuditLogID'.新索引定义与现有索引强制执行的约束不匹配.

这是,我认为,因为PK_AuditLog_AuditLogID

  • 聚集索引
  • 主键

所以我需要语法来创建主键聚簇索引 WITH DROP_EXISTING

MS.*_*MS. 15

CREATE UNIQUE CLUSTERED INDEX PK_AuditLog_AuditLogID
   ON dbo.AuditLog(AuditLogID)
   WITH DROP_EXISTING
   ON [TheOtherFileGroup]
Run Code Online (Sandbox Code Playgroud)

逻辑主键约束保存(虽然在2012测试)

CREATE TABLE dbo.AuditLog
(
AuditLogID int constraint PK_AuditLog_AuditLogID primary key
)


CREATE UNIQUE CLUSTERED INDEX PK_AuditLog_AuditLogID
   ON dbo.AuditLog(AuditLogID)
   WITH DROP_EXISTING
   ON [Primary]



SELECT CONSTRAINT_TYPE  /*Returns PRIMARY KEY*/
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_NAME = 'PK_AuditLog_AuditLogID'
Run Code Online (Sandbox Code Playgroud)

  • 我今天又遇到这个问题了。谷歌搜索让我想到了这个问题。我去投票这个有用的问题 - *“你不能投票你自己的帖子”* *“等等,什么!?”* (2认同)