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

时间:2012-11-14 15:29:04

标签: sql-server sql-server-2008 tsql indexing

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

创建表后,我也希望复制索引。

所以我使用的代码如下:

SELECT * INTO TableCopy FROM Table

然后:

ALTER TABLE TableCopy ADD CONSTRAINT pkGUID PRIMARY KEY ([GUID])
CREATE INDEX ixIndexName ON TableCopy (CountryCode)

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

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

我在这里缺少什么?

感谢。

1 个答案:

答案 0 :(得分:7)

  

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

没有。它们必须在表/视图中是唯一的。

在SSMS内执行时,删除现有索引并创建一个新索引。

来自MSDN上的CREATE INDEX (Transact-SQL)

  

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

(强调我的)


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