SQLServer 2012:表创建期间的非唯一索引定义



我可以在 SQLServer 2012 中的 CREATE TABLE 语句中创建非唯一索引吗? 我找到了一些引用此内容的预发布文档,但是当我尝试时,它不起作用。 看起来这并没有进入版本,但我想得到一个更明确的答案。

该文件表明您可以执行以下操作:

create table rm.test (
  t1 int not null,
  t2 int,
  constraint pk_t1 primary key (t1),
  index idx_t2 (t2)
)

但是,它抱怨"索引"。 有没有办法做到这一点,或者我在创建表后是否坚持执行创建索引?

No.

内联索引定义是 SQL Server 2014 的新增定义。

在这种情况下,您可以做

CREATE TABLE rm.test
  (
     t1 INT NOT NULL CONSTRAINT pk_t1 PRIMARY KEY,
     t2 INT,
     CONSTRAINT idx_t2 UNIQUE NONCLUSTERED (t2, t1)
  ) 

这实际上创造了同样的东西。

默认情况下,主键是聚集索引,CI 键隐式附加到非唯一非聚集键以保证唯一性。