Restricción única que permite valores vacíos en MySQL

Tengo un campo que almacena códigos de productos. Los códigos son únicos, pero algunos productos simplemente no tienen un código. No puedo inventar códigos porque esos son códigos de proveedores.

¿Es este tipo de restricción posible en MySQL?

Soy un novato con procedimientos almacenados y factores desencadenantes, por lo que si la solución implica uno de estos, tenga paciencia.

Actualización: la columna NO es nula. Es por eso que no pude hacer esto.

Sí, usted puede hacer esto. Ver la referencia de MySQL (versión 5.5) .

Un índice UNIQUE crea una restricción tal que todos los valores en el índice deben ser distintos. Se produce un error si intenta agregar una nueva fila con un valor clave que coincida con una fila existente. Para todos los motores, un índice ÚNICO permite valores NULL múltiples para columnas que pueden contener NULL.

Sí, si hace que la columna del código de producto sea nulable (no declarada con NOT NULL ), la clave única permitirá múltiples filas con códigos de producto NULL .

MySQL aún permite que varias filas tengan un valor de NULL en una columna única.