Как указать уникальное ограничение для нескольких столбцов в MySQL?

Просто модификация выше ответа. Просто запустите эту команду, чтобы установить mysql для python

sudo yum install MySQL-python
sudo apt-get install MySQL-python

, помните! Это чувствительно к регистру.

809
задан New Alexandria 10 December 2013 в 16:49
поделиться

4 ответа

ALTER TABLE `votes` ADD UNIQUE `unique_index`(`user`, `email`, `address`);
1365
ответ дан tsanchev 11 December 2013 в 03:49
поделиться

Вы попробовали это?

UNIQUE KEY `thekey` (`user`,`email`,`address`)
23
ответ дан Erick 11 December 2013 в 03:49
поделиться
  • 1
    What' s добавленная стоимость по сравнению с другими ответами? – Adriano Repetti 29 October 2012 в 12:01

Многоколоночные уникальные индексы не работают в MySQL, если у вас есть значение NULL в строке, так как MySQL рассматривает NULL как уникальное значение и, по крайней мере, в настоящее время не имеет логики, чтобы обойти это в многоколоночных индексах. Да, такое поведение безумно, потому что оно ограничивает множество законных применений многостолбцовых индексов, но это то, что есть... Пока что это ошибка, которая была помечена как "не будет исправлена" на баг-треке MySQL...

49
ответ дан 22 November 2019 в 21:14
поделиться

У меня есть таблица MySQL:

CREATE TABLE `content_html` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_box_elements` int(11) DEFAULT NULL,
  `id_router` int(11) DEFAULT NULL,
  `content` mediumtext COLLATE utf8_czech_ci NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id_box_elements` (`id_box_elements`,`id_router`)
);

и UNIQUE KEY работает как и ожидалось, он позволяет несколько NULL строк id_box_elements и id_router.

Я использую MySQL 5.1.42, так что, вероятно, было какое-то обновление проблемы, обсуждаемой выше. К счастью, все работает и, надеюсь, так и останется.

223
ответ дан 22 November 2019 в 21:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: