Vincolo unico che consente valori vuoti in MySQL


125

Ho un campo in cui sono memorizzati i codici prodotto. I codici sono unici, ma alcuni prodotti semplicemente non hanno un codice. Non riesco a inventare codici perché quelli sono codici dei provider.

Questo tipo di vincolo è possibile in MySQL?

Sono un noob con procedure memorizzate e trigger, quindi se la soluzione prevede uno di questi, per favore sii paziente.

Aggiornamento: la colonna NON è nulla. Ecco perché non sono stato in grado di farlo.



@AmirAliAkbari È divertente come questi due si colleghino come "possibile duplicato". Questo è più vecchio, però. :)
Pijusn,

Risposte:


182

Si, puoi fare questo. Vedi il riferimento MySQL (versione 5.5) .

Un indice UNICO crea un vincolo tale che tutti i valori nell'indice devono essere distinti. Si verifica un errore se si tenta di aggiungere una nuova riga con un valore chiave che corrisponde a una riga esistente. Per tutti i motori, un indice UNIQUE consente più valori NULL per le colonne che possono contenere NULL.


8
Grazie. Devo renderlo nullable
The Disintegrator

ha avuto questo problema nel modello django. Rendendolo nullable funziona. Grazie
Shrey,

13

Sì, se si annulla la colonna del codice prodotto (non dichiarata con NOT NULL), la chiave univoca consentirà più righe con NULLcodici prodotto.


Grazie. Devo renderlo nullable
The Disintegrator

8

MySQL consente comunque a più righe di avere un valore NULLin una colonna unica.


Grazie. Devo renderlo nullable
The Disintegrator

@MianAnjum in grassetto: CREATE TABLE table( keyint (11) NOT NULL AUTO_INCREMENT, fieldtinyint (1) DEFAULT NULL )
Paul Nowak,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.