2017-01-12 9 views
0

テーブルに列[型]があり、列挙型の値(1,2,4,8 - この番号の組み合わせ)が含まれています。 条件((タイプ& 8)= 8)で2つの列に対してユニークなインデックスを作成する必要があります。複雑な条件を持つ一意のインデックス

私はこれを実行しようとしました:それは作品

create unique index [name_unique] on [dbo].[Table]([Name],[SecondName],[Type]) WHERE (Type IN (9,10,12)) 

が、私は列挙型に任意のフィールドを追加する必要がある場合に、このインデックスを変更したいいけません。

+0

使用しているRDBMSの名前とバージョンは何ですか? –

+0

SQL Serverに列挙型があることに気づいていません。 –

+0

SQL Server 2012 –

答えて

0

ビット演算子を使用しないのはなぜですか?

create unique index [name_unique] on [dbo].[Table]([Name], [SecondName], [Type]) 
    where ((AxisType & 8) > 0); 
+0

フィールドリストのタイプと条件のタイプが異なる名前を持っていることは私には意味がありません。 – Hogan

+0

@Hogan。 。 。これはOPロジックです。それは私には意味をなさない。設定されているビットに基づいて、OPは3つの列をテーブル内で一意にする必要があります。一方が 'Type 'と呼ばれ、' AxisType'と呼ばれるものが偶然かもしれないという事実。 –

+0

私の間違いでした。 AxisTypeは型です。私は私の意見を訂正しました。 (AxisType&8)= 1は動作しません。なぜなら、WHERE状態では複雑な操作を使用できないからです。 –

関連する問題