2013-03-04 15 views
5

Abbiamo una tabella che ha un indice univoco su una colonna che può accettare valori nulli. Il problema è che abbiamo scoperto che questa struttura può accettare solo una riga con valore NULL. Se proviamo ad aggiungere la seconda riga con il valore NULL otteniamo un errore come. "impossibile inserire la riga chiave duplicata nell'oggetto ..."Più valori NULL nella colonna con indice UNIQUE

C'è qualcosa che possiamo fare per mantenere l'indice su questa colonna e la possibilità di aggiungere valori NULL a più di una riga?

+1

eliminare l'indice 'UNIQUE'. – Kermit

+1

L'indice non dovrebbe mai essere nullo, perché è necessario che sia nullo? – KevinA

+2

@KevinA: Che cosa intendi, se ho una colonna con valori nullable, non dovrei avere indici su di essa? Perchè no? –

risposta

25

Sì, è possibile utilizzare l'indice filtrato per supportarlo. Basta eliminare l'indice esistente e creare un nuovo indice come questo

CREATE UNIQUE INDEX Index_Name ON TableName(ColumnName) 
WHERE ColumnName IS NOT NULL 

Ciò consentirà di avere duplicati di valori NULL. Ecco un articolo approfondito se hai bisogno di maggiori dettagli su questo.

http://blog.sqlauthority.com/2008/09/01/sql-server-2008-introduction-to-filtered-index-improve-performance-with-filtered-index/

Problemi correlati