MySQL - Make a pair of values unique MySQL - Make a pair of values unique mysql mysql

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)


add primary key (col1, col2) to your create table definition