Guida per la progettazione di indici di SQL Server
Guida per la progettazione di indici di SQL Server

MICROSOFT SQL SERVER: Indice Univoco

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!