Come fare a creare un indice univoco su un DB Sql Server? Come fare in modo che i campi NULL non siano considerati?
Lo script per creare un indice univoco su un campo di una tabella Microsoft Sql Server è il seguente:
CREATE UNIQUE NONCLUSTERED INDEX IX_NomeTabella_NomeCampo ON dbo.NomeTabella
(
NomeCampo
)
WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
Questo script fallisce se il campo ammette valori nulli.
Cosa fare? Basta mettere la condizione where nell'indice:
CREATE UNIQUE NONCLUSTERED INDEX IX_NomeTabella_NomeCampo ON dbo.NomeTabella
(
NomeCampo
)
WHERE NomeCampo IS NOT NULL
WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
Buon lavoro!