MySQL – Make a pair of values unique

It’s called a composite key.

If you want to change your actual PK to a composite one, 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>);

You can also just add a unique constraint (your PK will be the same, and unique pairs… will have to be unique).

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

Personnally, I would recommend the second solution (simple PK + unique constraint), but that’s just a personal point of view. You can google for pros and cons arguments about composite keys.

The part between [] are optional.

EDIT

If you wanna do this in the create table statement

For a composite pk

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

For an unique index

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

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)