MySQL-сделать пару значений уникальными
У меня есть таблица с двумя значениями int, которые являются идентификаторами. Сами по себе эти идентификаторы могут отображаться в таблице любое количество раз, но вместе они должны появляться только один раз.
есть ли способ сделать пару значений уникальными и все же позволить отдельным значениям отображаться несколько раз?
в качестве продолжения, если это возможно, можно ли использовать пару значений в качестве ключа? В настоящее время у меня есть 3-й столбец для уникального значения автоматического приращения для моего ключ.
3 ответов
это называется составной ключ.
если вы хотите изменить свой фактический ПК на составной, используйте
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>);
вы также можете просто добавить уникальное ограничение (ваш ПК будет таким же и уникальными парами... должны быть уникальными).
alter table <your table> add [constraint <constraint name>] unique index(<col1>, <col2>);
Personnally, я бы рекомендовал второе решение (простое ограничение PK + unique), но это просто личная точка зрения. Вы можете google для аргументов " ЗА " и "против" о составных ключах.
в часть между []
необязательны.
редактировать
если вы хотите сделать это в инструкции create table
для составного ПК
CREATE TABLE Test(
id1 int NOT NULL,
id2 int NOT NULL,
id3 int NOT NULL,
PRIMARY KEY (id1, id2)
);
для уникального индекса
CREATE TABLE Test1(
id1 int NOT NULL AUTO_INCREMENT,
id2 int NOT NULL,
id3 int NOT NULL,
PRIMARY KEY (id1),
UNIQUE KEY (id2, id3)
);