T-SQL在一个查询中创建表和索引

时间:2014-10-03 16:01:48

标签: sql sql-server sql-server-2012

是否可以只使用一个这样的SQL语句创建索引(没有外键而不是唯一的)和表(不是表变量)。

CREATE TABLE tabind
(
    id          int             identity(1,1) primary key   ,
    birthday    datetime        default getdate()           ,
    some_id     int             INDEX index_name, /*this line causes a sql server error*/
    name        nvarchar(100)
);

实际上相当于这句话:

CREATE TABLE tabind
(
    id          int             identity(1,1) primary key   ,
    birthday    datetime        default getdate()           ,
    some_id int             ,
    name        nvarchar(100)
);

create index idx_tabind on tabind(some_id);

我的SQL Server版本是2012年。

感谢。

1 个答案:

答案 0 :(得分:5)

不,在线索引声明仅限2014年。

这实际上创建了相同的索引。

CREATE TABLE tabind
  (
     id       INT IDENTITY(1, 1) PRIMARY KEY,
     birthday DATETIME DEFAULT GETDATE(),
     some_id  INT,
     NAME     NVARCHAR(100),
     CONSTRAINT index_name UNIQUE (NAME, id)
  ); 

SQL Server静默makes non unique non clustered indexes unique通过添加聚集索引键(在您的情况下由PK隐式创建)