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'
Вы можете попробовать сами здесь.