2009-11-13 11 views
19

インデックス名は、SQL Serverデータベース全体にわたって、またはそのテーブルに対してのみ固有でなければなりませんか? OrderLoadCarrierDeliveryテーブルのOrderLoadID列のIX_OrderLoadCarrierDelivery_OrderLoadIDインデックスの名前はデータベース内で一意である必要がありますか?

:たとえば

は、私は私のインデックスに名前を付ける必要があります。または、私はちょうどそれを指定する必要がありますIX_OrderLoadID

ありがとう!

答えて

19

作成されたテーブルまたはビューで一意である必要があります。

reference on msdnここにこれが詳しく記載されています。

FTA:

index_nameの

は、インデックスの名前です。 テーブルまたはビュー内のインデックス名はである必要がありますが、データベース内では一意である必要はありません。 インデックス名 は、識別子の規則に従う必要があります。

私は、大会は、テーブルごとに、

IX_FieldName 
+0

IX_TableName_FieldNameを意味すると思います。あなたは外来的なキーの関係のラインに沿って考えています。 –

+0

はFK国際大会のように見えますか? – gbn

+0

@Bobあなたが正しいです、編集されます – Joseph

7

んだと思います。私もIX_SingleColumnまたはIX_ParentTableのようなものを使用したい、sys.objectsではなく、その後sys.indexesでユニーク(OBJECT_ID、名)列のペアだけで(名)(SCHEMA_IDを無視して)

ある

。テーブルを追加すると、デフォルトとは異なり、不必要であるか、チェック制約、たとえば、それは彼らがあなたがSQL管理スタジオを使用している場合は、すべてがキー として名前のsysobjectsに格納されますとユニークである必要はありDB

+0

+1それは本当にテーブルごとです。すべての担当者とそれがDB単位であるとの回答を受け入れているかどうかは不明です。何か不足していますか? sysindexesテーブルは、同じ名前の複数のエントリを持つことができます。ただし、id(sysobjectsのテーブルに関連しています)が区別されていれば... – mjv

+0

制約名は[スキーマごとに固有です。](http://msdn.microsoft.com/ en-us/library/ms174979.aspx)( "constraint_name"を検索)、データベースではありません。 –

-4

ごとに一意である、それはIX_Table_Field構文

です
+1

両方のカウントで間違っています。 – gbn

関連する問題