Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como crio uma restrição exclusiva que também permite nulos?


O que você está procurando é de fato parte dos padrões ANSI SQL:92, SQL:1999 e SQL:2003, ou seja, uma restrição UNIQUE deve não permitir valores duplicados não NULL, mas aceitar vários valores NULL.

No mundo Microsoft do SQL Server, no entanto, um único NULL é permitido, mas vários NULLs não são ...

No SQL Server 2008 , você pode definir um índice filtrado exclusivo com base em um predicado que exclui NULLs:
CREATE UNIQUE NONCLUSTERED INDEX idx_yourcolumn_notnull
ON YourTable(yourcolumn)
WHERE yourcolumn IS NOT NULL;

Em versões anteriores, você pode recorrer a VIEWS com um predicado NOT NULL para impor a restrição.