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


125

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

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

Soy un novato con procedimientos almacenados y desencadenantes, así que si la solución involucra uno de estos, tenga paciencia.

Actualización: la columna NO es nula. Por eso no pude hacer esto.



@AmirAliAkbari Es curioso cómo estos dos se vinculan entre sí como "posible duplicado". Sin embargo, este es más viejo. :)
Pijusn

Respuestas:


182

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

Un índice ÚNICO 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 múltiples valores NULL para columnas que pueden contener NULL.


8
Gracias. Tengo que hacerlo anulable
The Disintegrator

Tuve este problema en el modelo django. Hacer que funcione con nulos. Gracias
Shrey

13

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


Gracias. Tengo que hacerlo anulable
The Disintegrator

8

MySQL todavía permite que varias filas tengan un valor NULLen una columna única.


Gracias. Tengo que hacerlo anulable
The Disintegrator

@MianAnjum en negrita: CREATE TABLE table( keyint (11) NOT NULL AUTO_INCREMENT, fieldtinyint (1) DEFAULT NULL )
Paul Nowak
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.