web-dev-qa-db-fra.com

Contrainte unique qui autorise les valeurs vides dans MySQL

J'ai un champ qui stocke les codes produits. Les codes sont uniques, mais certains produits n'ont tout simplement pas de code. Je ne peux pas inventer de codes parce que ce sont des codes de fournisseurs.

Ce type de contrainte est-il possible dans MySQL?

Je suis un noob avec des procédures stockées et des déclencheurs, donc si la solution implique l'un d'entre eux, veuillez être patient.

Mise à jour: la colonne n'est PAS nulle. C'est pourquoi je n'ai pas pu faire ça.

121
The Disintegrator

Oui, vous pouvez le faire. Voir référence MySQL (version 5.5) .

Un index UNIQUE crée une contrainte telle que toutes les valeurs de l'index doivent être distinctes. Une erreur se produit si vous essayez d'ajouter une nouvelle ligne avec une valeur de clé qui correspond à une ligne existante. Pour tous les moteurs, un index UNIQUE autorise plusieurs valeurs NULL pour les colonnes pouvant contenir NULL.

178
lutz

Oui, si vous rendez la colonne de code produit nullable (non déclarée avec NOT NULL), la clé unique autorisera plusieurs lignes avec NULL codes produits.

13
chaos

MySQL permet toujours à plusieurs lignes d'avoir une valeur de NULL dans une colonne unique.

8
cg.