0

我想要做的是使用 SELECT INTO 语句制作表的副本。

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

所以我使用的代码如下:

SELECT * INTO TableCopy FROM Table

然后:

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

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

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

我在这里想念什么?

谢谢。

4

1 回答 1

7

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

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

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

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

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

(强调我的)


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

于 2012-11-14T15:31:02.910 回答