A와 B의 두 열이있는 mysql 테이블이 있다고 가정합니다. A 또는 B (한 번만 전체 테이블에서) 값을 한 번만 삽입 할 수 있도록 고유 키를 가질 수 있습니까?전체 mysql 테이블의 고유 키?
따라서 열 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 또는 B가 이미 존재'이 표시되지 않는 오류 메시지 만 :
오류를 나는 다음과 같은 트리거 이러한 목표를 달성 할 수 있었다 1054 (42S22) : 'where 절'에서 알 수없는 열 '없음'
다시 한번 감사드립니다!
또 다른 옵션으로 '값', 'a', 'b'및 'b'가 비트 인 테이블을 가질 수 있으며 값 (고유해야 함)이 입력되면 또한 a 또는 b를 1로 설정합니다. 누군가가 'a'와 'b'모두 1을 넣는다면 여전히 문제가되는 것 같지만 다른 방법이 있습니다. – Harold