对集群PK的newsequentialid约束

时间:2017-03-03 10:06:38

标签: sql sql-server constraints

我的表具有uniqueidentifier类型的聚簇主键,并且它们不是顺序的,因此发生了大量的物理排序。

我知道最好将复合主键与clustered int和non clustered uniqueidentifier结合使用,但数据库已经在生产中使用。

问题是如何更改PK上的约束以使用NEWSEQUENTIALID()作为默认值并且是群集主键。我假设我必须删除并重新创建约束。我不是dba所以如果你能用语法提供例子,那将是最好的。

1 个答案:

答案 0 :(得分:0)

我找到了我的问题的答案,我无法添加描述聚集PK的约束以及该列的默认值。但我可以用两个约束来做到这一点。

ALTER TABLE dbo.FooTable 
ADD CONSTRAINT [PK_FooTableId] PRIMARY KEY CLUSTERED 
(
    [Id] ASC 
)

ALTER TABLE dbo.FooTable 
ADD CONSTRAINT [PK_FooTableId_Default] DEFAULT NEWSEQUENTIALID() for Id