使用T-SQL创建索引返回索引存在错误

Tom*_*Tom 0 t-sql sql-server indexing sql-server-2008

我要做的是使用SELECT INTO语句复制表.

创建表后,我也想复制索引.

所以我使用的代码如下:

SELECT * INTO TableCopy FROM Table
Run Code Online (Sandbox Code Playgroud)

然后:

ALTER TABLE TableCopy ADD CONSTRAINT pkGUID PRIMARY KEY ([GUID])
CREATE INDEX ixIndexName ON TableCopy (CountryCode)
Run Code Online (Sandbox Code Playgroud)

当我执行索引SQL时,我得到一个错误,索引已存在于目录中.我不认为索引名称必须是唯一的,我认为它们可以在不同的表中重复.

如果我通过管理工作室创建索引,它会接受索引名称.

我在这里错过了什么?

谢谢.

Ode*_*ded 7

我不认为索引名称必须是唯一的,我认为它们可以在不同的表中重复.

不,它们必须在表/视图中是唯一的.

在SSMS中执行时,它会删除现有索引并创建一个新索引.

从MSDN上的CREATE INDEX(Transact-SQL):

index_name - 索引的名称.索引名称在表或视图中必须是唯一的,但在数据库中不必是唯一的.

(强调我的)


但是,pkGUID它不是索引 - 它是一个约束,并且这些必须在数据库中是唯一的.