2016-05-13 4 views
1

一意の条件付き制約を持つ正しい方法は何でしょうか? したがって、ユーザーがAccountIdentifierフィールドに何も入力せずにサブミットすると、データベースにNullとして表示されますが、ユニーク制約のために複数のNULLを持つことはできません。一意の列に複数のNULLを受け入れる条件を持つ一意の制約

CREATE TABLE [dbo].[AccountTemplate] 
(
    [AccountID] INT NOT NULL, 
    [AccountIdentifier] NCHAR(50) NULL, 
    CONSTRAINT [FK_AccountTemplate_Identifier] UNIQUE NONCLUSTERED ([AccountIdentifier] ASC, [AccountID] ASC) 
) 
+0

ご質問には当てはまらないタグ​​を使用しないでください。 –

+0

JamesZの回答は正しいですが、いくつかのキャッチがあります。このアプローチについては、次のsqlmagの記事でよく説明されています。 http://sqlmag.com/blog/whats-good-use-unique-filtered-index –

答えて

2

インデックスをフィルタとして作成します。インデックスからヌル値を除外すると、一意性は強制されません。

1

NULLは値ではありませんが、その欠如です。あなたは一意の列に好きな数だけNULLを入れることができます。たとえば、テーブルにこのsqlfiddle exampleを表示してください。

関連する問題