假设我有一个包含两列的 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`)
谢谢。
编辑:我能够使用以下触发器来完成此操作:
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 子句”中的未知列“不存在”
再次感谢!