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));
Try this: ALTER TABLE table_name ADD CONSTRAINT uc_name UNIQUE (col1,col2)