AとBの2つの列を持つmysqlテーブルがあるとします。AまたはBのいずれかに1回だけ(テーブル全体で1回)値を挿入できるように、一意のキーを持つことは可能ですか?
したがって、列Aに「qwe」が含まれ、Bに「asd」が含まれている場合、これら2つの値をどちらの列にも挿入できなくなります。
これは機能しません:
UNIQUE KEY `A` (`A`,`B`),
UNIQUE KEY `A_2` (`A`),
UNIQUE KEY `B` (`B`),
UNIQUE KEY `B_2` (`B`,`A`)
ありがとう。
編集:私は次のトリガーでこれを達成することができました:
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句」に不明な列「存在しません」
再度、感謝します!