Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL - Rendre une paire de valeurs unique

C'est ce qu'on appelle une clé composite.

Si vous voulez changer votre PK réel en un composite, utilisez

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>);

Vous pouvez également simplement ajouter une contrainte unique (votre PK sera le même, et les paires uniques... devront être uniques).

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

Personnellement, je recommanderais la deuxième solution (simple PK + contrainte unique), mais ce n'est qu'un point de vue personnel. Vous pouvez rechercher sur Google les avantages et les inconvénients des clés composites.

La partie entre [] sont facultatifs.

MODIFIER

Si vous voulez le faire dans l'instruction de création de table

Pour un pk composite

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

Pour un index unique

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