Предположим, у меня есть таблица mysql с двумя столбцами: A и B. Можно ли иметь уникальный ключ, чтобы я мог вставлять значение только один раз в A или B (один раз во всю таблицу)?
Таким образом, если столбец A содержит 'qwe', а B содержит 'asd', эти два значения больше не могут быть вставлены ни в один из столбцов.
это не сработает:
UNIQUE KEY `A` (`A`,`B`),
UNIQUE KEY `A_2` (`A`),
UNIQUE KEY `B` (`B`),
UNIQUE KEY `B_2` (`B`,`A`)
спасибо.
edit: Мне удалось выполнить это со следующим триггером:
delimiter |
create trigger unique_check before insert on mytable
for each row begin
declare alreadyexists integer;
select count(*) > 0 into alreadyexists from mytable
where A=NEW.B or B=NEW.A;
IF alreadyexists = 1 THEN begin
DECLARE dummy INT;
SELECT 'A OR B already exists' INTO dummy FROM mytable
WHERE nonexistent = 'value';
end;
END IF;
END;|
Однако я не вижу сообщения об ошибке «A OR B уже существует», но:
ОШИБКА 1054 (42S22): Неизвестный столбец «несуществующий» в «предложении where»
Еще раз спасибо!