MySQL двухколонный уникальный ключ

Я знаю, что могу сделать два столбца уникальными ключами, но это не совсем то, что я хочу.

Я хочу это, например, если col1='1', col2='2' тогда не может быть другого ряда с col1='1', col2='2', но вполне возможно сделать следующее:

+--------+--------+
|  col1  |  col2  |
+--------+--------+
|    1   |    1   |
|    1   |    2   |
|    2   |    1   |
|    2   |    2   |
+--------+--------+

пока это невозможно

+--------+--------+
|  col1  |  col2  |
+--------+--------+
|    1   |    1   |
|    1   |    1   |
+--------+--------+

Создание обоих уникальных ключей не вариант, как в col1='1', col2='1' а также col1='1', col2='2'col1 то же самое, и это не допускается, если оба являются уникальными ключами.

2 ответа

Решение

Тебе нужно composite unique index,

ALTER TABLE tablename ADD UNIQUE KEY `uidx` (`col1`, `col2`);

Вам просто нужно объявить уникальный индекс между двумя столбцами col1, а также col2:

CREATE TABLE Table1
(
  `col1` int, 
  `col2` int,
   UNIQUE `unique_index`(`col1`, `col2`)
);

Если вы попытаетесь вставить 1, 1в col1 и col2 вы получите следующую ошибку:

Duplicate entry '1-1' for key 'unique_index'

Вы можете попробовать сами здесь.

Другие вопросы по тегам