2016-05-13 4 views
1

Ich frage mich, was wäre der richtige Weg, eine eindeutige bedingte Einschränkung sein? Wenn also ein Benutzer nichts in das AccountIdentifier-Feld eingibt und absendet, wird es als Null in der Datenbank angezeigt. Aufgrund der eindeutigen Einschränkung kann es jedoch nicht mehrere Nullwerte haben. Gibt es eine Möglichkeit, dies zu tun?eindeutige Einschränkung mit einer Bedingung zu akzeptieren, mehrere Nullen auf einer einzigen Spalte

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

Bitte verwenden Sie keine Tags, die nicht auf Ihre Frage zutreffen –

+0

JamesZ Antwort ist richtig, nur Vorsicht, obwohl es ein paar Fänge gibt. Der folgende sqlmag-Artikel beschreibt diesen Ansatz gut: http://sqlmag.com/blog/whats-good-use-unique-filtered-index –

Antwort

2

Erstellen Sie Ihren Index als gefiltert. Wenn Sie Nullwerte aus dem Index herauslassen, wird die Eindeutigkeit ebenfalls nicht erzwungen.

1

NULL ist kein Wert, es ist der Mangel davon. Sie können so viele NULL s haben, wie Sie möchten, in einer eindeutigen Spalte. Siehe beispielsweise sqlfiddle example mit Ihrem Tisch.

Verwandte Themen