Supongamos que hay una tabla con columnas a
y b
, y con clave compuesta única del a,b
par. Y hay fila a=1, b=2
.
Entonces no puedo insertar otra fila a=1, b=2
, está bien.
Pero, ¿cómo podría negar en esta situación también insertar fila a=2, b=1
?
Por ejemplo:
CREATE TABLE `t` (`a` INT, `b` INT);
ALTER TABLE `t` ADD UNIQUE(`a`, `b`);
INSERT INTO `t` (`a`, `b`) VALUES ('1', '2');
INSERT INTO `t` (`a`, `b`) VALUES ('2', '1');
El segundo inserto funciona, aunque espero que falle.
UNIQUE KEY uk_ab (a,b)
permite insertar a=2,b=1
cuando a=1,b=2
existe :(
Han actualizado la publicación con el ejemplo.
—
Alexey
Sí, eso suena correcto, permitirá un registro de esos mismos valores para que me parezca correcto.
—
Pimp Juice IT
a=2,b=1
es un registro y a=1,b=2
es otro registro. Solo puede tener UN registro donde cada uno de esos sean verdaderos donde a y b sean iguales a algún valor, de modo que sus dos ejemplos sean diferentes y no iguales, de modo que sea correcto. Intente insertar otro registro donde esos sean los mismos nuevamente y confirme que está funcionando.
a=2
,b=1
tal como lo haríaa=1
, porb=2
lo que ya tiene la respuesta a esta pregunta. Esto significaría que solo puede tener 1 registro en la tabla dondea=2
yb=1
tal como funcionaría para el registroa=1
yb=2
para ese registro, solo uno permitido con ese combo de teclas único ... Parece que lo tienes bajo control para mí. ... es decir,UNIQUE KEY 'uk_ab' ('a','b')
esto funcionaría igual para AMBOS que en su ejemplo de su pregunta.