sql >> Base de Datos >  >> RDS >> Mysql

MySQL:haz que un par de valores sean únicos

Se llama clave compuesta.

Si desea cambiar su PK real a uno compuesto, use

Alter table <your table> drop PRIMARY KEY;
Alter table <your table> drop COLUMN <your autoincremented column>;

Alter table <your table> add [constraint <constraint name>] PRIMARY KEY (<col1>, <col2>);

También puede simplemente agregar una restricción única (su PK será el mismo y los pares únicos... tendrán que ser únicos).

alter table <your table> add [constraint <constraint name>] unique index(<col1>, <col2>);

Personalmente, recomendaría la segunda solución (PK simple + restricción única), pero ese es solo un punto de vista personal. Puede buscar en Google los argumentos a favor y en contra de las claves compuestas.

La parte entre [] son opcionales.

EDITAR

Si quiere hacer esto en la declaración de creación de tabla

Para un paquete compuesto

CREATE TABLE Test(
    id1 int NOT NULL, 
    id2 int NOT NULL,
    id3 int NOT NULL,
    PRIMARY KEY (id1, id2)
);

Para un índice único

CREATE TABLE Test1(
    id1 int NOT NULL AUTO_INCREMENT, 
    id2 int NOT NULL,
    id3 int NOT NULL,
    PRIMARY KEY (id1),
    UNIQUE KEY (id2, id3)
);