Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie erstelle ich eine eindeutige Einschränkung, die auch Nullen zulässt?

Was Sie suchen, ist in der Tat Teil der ANSI-Standards SQL:92, SQL:1999 und SQL:2003, dh eine UNIQUE-Einschränkung muss doppelte Nicht-NULL-Werte zulassen, aber mehrere NULL-Werte akzeptieren.

In der Microsoft-Welt von SQL Server ist jedoch eine einzelne NULL erlaubt, aber mehrere NULLen nicht ...

In SQL Server 2008 , können Sie einen eindeutigen gefilterten Index basierend auf einem Prädikat definieren, das NULLen ausschließt:

CREATE UNIQUE NONCLUSTERED INDEX idx_yourcolumn_notnull
ON YourTable(yourcolumn)
WHERE yourcolumn IS NOT NULL;

In früheren Versionen können Sie auf VIEWS mit einem NOT NULL-Prädikat zurückgreifen, um die Einschränkung durchzusetzen.