Многоколоночная уникальная индексация MySQL независимо от столбца

Простая структура таблицы: id_1 int, id_2 int,

Это простая реляционная таблица, создающая отношения между пользователями. id_1 и id_2 всегда будут user_id, которые существуют в другой таблице. Я пытаюсь создать индексацию таким образом, чтобы ни одна пара user_id не могла существовать в этой таблице более одного раза, независимо от того, в каком столбце находится идентификатор. Например, заданные идентификаторы пользователей: 1 и 2, если у нас есть запись: 1 ,2

Тогда запись: 2,1 следует считать дубликатом.

Все мои попытки уникальной индексации не работают таким образом, поскольку они зависят от столбца. Есть ли способ структурировать это или это нужно делать с помощью хранимых процедур или чего-то подобного?


person Kyle Buser    schedule 24.05.2013    source источник
comment
Вам понадобятся триггеры для такого рода вещей. Но в целом таблица, в которой id_1 и id_2 взаимозаменяемы, обычно означает проблему проектирования, и вы настраиваете себя на болезненную логику JOIN, когда начинаете выполнять запросы к таблице.   -  person Ed Gibbs    schedule 24.05.2013


Ответы (1)


Если бы я был вами, и мне пришлось бы пойти по этому пути (+1 Эду Гиббсу, говорящему, что у вас, вероятно, проблема с дизайном) В моем коде, который вставляется в MySQL, я бы всегда имел id_1 ‹ id_2. Поэтому, если у вас есть доступ к вашему приложению, и вы всегда можете сделать так, чтобы id_1 ‹ id_2, у вас не было никаких проблем.

person chrislondon    schedule 24.05.2013