Хорошо, я знаю, что могу сделать это на прикладном уровне, что, вероятно, проще всего сделать, но просто чтобы убедиться, что в БД нет ошибок, у меня серьезный вопрос
У меня есть два столбца X и Y, каждый для хранения двух целых чисел (либо A, либо B в любом из столбцов). Можно ли иметь уникальное ограничение индекса, чтобы ни в коем случае не иметь
- Столбец X с A и Столбец Y с B
- Столбец X с буквой B и столбец Y с буквой A
Я приведу сценарий
У меня два пользователя, userA имеет идентификатор 678498, а userB имеет идентификатор 679879. Оба пользователя собираются сыграть в игру для двух игроков, которая требует сохранения новой записи для этого сеанса в таблице (tbl_chalenger). Для этого у меня есть таблица со столбцами «хост» и «претендент».
У меня есть уникальное ограничение, добавленное к tbl_challenger как
UNIQUE KEY `UNIQUE_PARTICIPANTS` (`host`,`challenger`)
Брендинг пользователей хостом или претендентом в основном зависит от того, кто инициировал игру. Так что, если пользователь А инициирует игру, у нас будет следующий запрос
INSERT INTO `tbl_challenger` VALUES(678498 , 679879);
, которая создает новую запись, но, к сожалению, если одновременно пользователь B попытается начать игру с пользователем A, мы получим
INSERT INTO `tbl_challenger` VALUES(679879, 678498 );
Создает новую нежелательную строку из тех же участников. Это независимо от УНИКАЛЬНОГО ключевого ограничения.
Таким образом, мой вопрос заключается в том, как иметь ограничение, которое является двунаправленным?, Чтобы "хост-претендент", а также "претендент-хост" не могли иметь одну и ту же пару данных