2009-06-29 12 views
7

Me he encontrado con una situación en la que quiero asegurarme de que un elemento compuesto de una tabla sea único. Por ejemplo:¿Cómo puedo hacer cumplir la singularidad compuesta en MySQL?

Table (
    id char(36) primary key, 
    fieldA varChar(12) not null, 
    fieldB varChar(36) not null 
) 

no quiero FIELDA y FIELDB a ser una clave primaria compuesta, ya que cambian con frecuencia, y 'id' se utiliza como referencia en todo el sistema.

fieldA y fieldB no son únicos en sí mismos, pero sus combinaciones deben ser únicas. Entonces, por ejemplo, {{1, Matt, Jones}, {2, David, Jones}, {3, Matt, Smith}} serían datos válidos, pero {{1, Matt, Jones}, {2, Matt, Jones }} no sería.

Respuesta

7

añadir una clave única a su definición de la tabla:

Table (
    id char(36) primary key, 
    fieldA varChar(12) not null, 
    fieldB varChar(36) not null, 
    UNIQUE fieldA_fieldB (fieldA, fieldB) 
) 
+0

sólo necesitaba otro vistazo a la documentación, ¡aparentemente! ¡Gracias! –

11

Se puede añadir una restricción de clave UNIQUE en los dos campos:

ALTER TABLE `table_name` ADD UNIQUE (
`fieldA`, 
`fieldB` 
); 
1
ALTER Table ADD UNIQUE (fieldA, fieldB); 
Cuestiones relacionadas