2012-11-14 82 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