Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL - Faça um par de valores único


É chamado de chave composta.

Se você quiser alterar seu PK real para um composto, 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>);

Você também pode simplesmente adicionar uma restrição única (seu PK será o mesmo e pares únicos... terão que ser únicos).
alter table <your table> add [constraint <constraint name>] unique index(<col1>, <col2>);

Pessoalmente, eu recomendaria a segunda solução (PK simples + restrição única), mas isso é apenas um ponto de vista pessoal. Você pode pesquisar no Google por argumentos prós e contras sobre chaves compostas.

A parte entre [] são opcionais.

EDITAR

Se você quiser fazer isso na instrução create table

Para um pk composto
CREATE TABLE Test(
    id1 int NOT NULL, 
    id2 int NOT NULL,
    id3 int NOT NULL,
    PRIMARY KEY (id1, id2)
);

Para um í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)
);