Отключение команды cat

Предположим, у меня есть таблица 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»

Еще раз спасибо!

6
задан OMG Ponies 26 April 2011 в 03:08
поделиться