我使用SQL Server 2008.
我正在尝试在我的表上创建一个非聚集索引。我想检查是否存在创建此方法而不给索引命名的方法。
例如
CREATE TABLE #mytable (Date_ datetime NOT NULL, ID_ varchar(10) NOT NULL, Value_)
当我向此表添加PK时,我没有指定该键的名称。例如,
ALTER TABLE #mytable ADD PRIMARY KEY CLUSTERED (Date_ ASC, ID_ ASC)
是否可以执行类似的操作来创建非聚集索引而不指定名称?
例如
ALTER TABLE #mytable ADD NONCLUSTERED INDEX (Date_, Value_) -- FAILS!!!
我知道的唯一命令是
CREATE NONCLUSTERED INDEX *keyname* ON #mytable (Date_, Value_)
答案 0 :(得分:2)
不,没有名称就无法创建非聚集索引,语法非常明确:
CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name
INDEX_NAME 是索引的名称。索引名称在表格中必须是唯一的 查看但不必在数据库中是唯一的。索引名称必须 遵循标识符规则。
数据库对象名称称为其标识符。一切 在Microsoft SQL Server中可以有一个标识符。服务器,数据库, 和数据库对象,例如表,视图,列,索引, 触发器,过程,约束和规则可以具有标识符。 大多数对象都需要标识符,但对某些对象是可选的 约束等对象。
答案 1 :(得分:-1)
创建临时表后,以guid为索引名执行动态续集
DECLARE @NewId VARCHAR(64)= REPLACE(NEWID(),'-','');
EXEC('CREATE INDEX IX _'+ @ NewId +'ON #Table(ColA,ColB)INCLUDE(ColZ)');