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

0

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

Я хочу, чтобы это, например, если 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 - то же самое и не разрешено, если оба являются уникальными ключами.

Теги:
database
key
unique-key

2 ответа

0
Лучший ответ

Вам нужен composite unique index.

ALTER TABLE tablename ADD UNIQUE KEY 'uidx' ('col1', 'col2');
  • 0
    Спасибо за решение!
0

Вам просто нужно объявить уникальный индекс между двумя столбцами 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'

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню