Уникальный индекс не основан на порядке слов? - PullRequest
1 голос
/ 12 октября 2011

Можно ли иметь индекс mysql UNIQUE для поля varchar, не основанный на порядке слов?

Я имею в виду, если есть строка с key1 key2, и я пытаюсь вставить key2 key1 mysqlдолжен выдать ошибку.

Ответы [ 3 ]

0 голосов
/ 12 октября 2011

Этого можно добиться, добавив в таблицу до вставки и до обновления триггеры; они могли бы проверить, существует ли строка с перевернутыми полями или нет, перед вставкой / обновлением, если это не так, или принудительным выводом ошибки, если это так.

См. здесь для получения дополнительной информации.

0 голосов
/ 12 октября 2011

Создайте триггер для этого.

т.е.

CREATE TRIGGER trigger_name BEFORE INSERT ON table_name
FOR EACH ROW
BEGIN
   IF ((SELECT COUNT(*) FROM table WHERE col2=NEW.col1 OR col1=NEW.col2) <> 0)
   THEN
     CALL this_procedure_does_not_exist();
   END IF
END
0 голосов
/ 12 октября 2011

Если вы установите индексированное значение UNIQUE, вы не сможете дважды ввести идентичные данные - числа, слова или иное.

Если вы хотите достичь чего-то иного, вам придется установить новое неуникальное поле в вашей базе данных, тогда вы сможете достичь этого с помощью внешнего кода и запросов (PHP, C #).

...