Home
Guida per la progettazione di indici di SQL Server

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!

We use cookies

Utilizziamo i cookie sul nostro sito Web. Alcuni di essi sono essenziali per il funzionamento del sito, mentre altri ci aiutano a migliorare questo sito e l'esperienza dell'utente (cookie di tracciamento). Puoi decidere tu stesso se consentire o meno i cookie. Ti preghiamo di notare che se li rifiuti, potresti non essere in grado di utilizzare tutte le funzionalità del sito.