UB0*_*B01 7 index sql-server-2008 clustered-index clustered-primary-key
在 Sql Server (2008) 中,是否可以PRIMARY KEY
在一组列上有一个而没有同一组列上的任何一个CLUSTERED
或NONCLUSTERED
索引?
我知道PRIMARY KEY
和CLUSTERED INDEX
key 是不同的概念,我们可以在PRIMARY KEY
没有CLUSTERED INDEX
它的情况下创建(见下文)。
ALTER TABLE dbo.Sample
ADD CONSTRAINT PK_Sample_SeqGUID_Col1 PRIMARY KEY NONCLUSTERED (SeqGUID_Col1)
Run Code Online (Sandbox Code Playgroud)
但我的问题是看看是否可以PRIMARY KEY
在没有CLUSTERED
或NONCLUSTERED
索引的表上创建。
不,主键约束总是通过唯一索引在 SQL-Server 中强制执行。索引可以是聚集的或非聚集的。如果您不指定哪种类型,则默认CLUSTERED
为主键。从MSDN 文档中,CREATE TABLE
:
CLUSTERED | NONCLUSTERED
指示为
PRIMARY KEY
orUNIQUE
约束创建聚集索引或非聚集索引。PRIMARY KEY
约束默认为CLUSTERED
,UNIQUE
约束默认为NONCLUSTERED
。在一个
CREATE TABLE
语句中,CLUSTERED
只能指定一个约束。如果CLUSTERED
为UNIQUE
约束指定了并且PRIMARY KEY
还指定了约束,则PRIMARY KEY
默认为NONCLUSTERED
。