2009-08-28 24 views
114

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.Restricción única que permite valores vacíos en MySQL

¿Este tipo de restricción es posible en MySQL?

Soy un novato con procedimientos almacenados y 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.

+0

Posible duplicado de [¿MySQL ignora los valores nulos en las restricciones únicas?] (Http://stackoverflow.com/questions/3712222/does-mysql-ignore-null-values-on-unique-constraints) –

+0

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

Respuesta

174

Sí, puedes hacer esto. Vea el MySQL reference (version 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.

+7

Gracias. Tengo que hacer que sea nulable –

+0

tenía este problema en el modelo django. Hacerlo funciona de forma nula. Gracias – Shrey

8

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

+0

Gracias. Tengo que hacerlo nulo –

+0

¿Cómo es posible? –

+0

@MianAnjum en negrita: CREATE TABLE 'table' (' key' int (11) NOT NULL AUTO_INCREMENT, 'field' tinyint (1) ** DEFAULT NULL **) –

13

Sí, si hace que el código del producto sea nulo (no declarado con NOT NULL), la clave única permitirá varias filas con NULL códigos de producto.

+0

Gracias. Tengo que hacerlo nulo –

Cuestiones relacionadas