2012-11-14 80 views
0

我想要做的是使用SELECT INTO语句复制一个表。使用T-SQL创建索引返回索引存在错误

表创建后,我想要复制索引。

所以我使用的代码如下:

SELECT * INTO TableCopy FROM Table 

然后:

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

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

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

我在这里错过了什么?

谢谢。

回答

7

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

不需要。它们在表格/视图中必须是唯一的。

当您在SSMS内执行时,它将下降现有的索引并创建一个新的索引。

CREATE INDEX (Transact-SQL) MSDN上:

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

(重点煤矿)


然而,pkGUID是不是索引 - 这是一个约束,而这些都必须在数据库中是唯一的。

+1

索引名称不必是唯一的。 **约束**名称。 –

+1

@MartinSmith - 感谢您的纠正。 – Oded

+0

我在我的数据库中有两个表格,pkGUID作为主键,当我检查属性时,我没有看到SSMS为其中的任何一个指定了不同的名称 – Tom