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 に答える