sourcetip

마리아에 삽입하기 전 트리거DB

fileupload 2023. 10. 10. 20:53
반응형

마리아에 삽입하기 전 트리거DB

새 행을 삽입하기 전에 새 트리거를 만드는 데 문제가 있습니다.삽입 전에 동일한 표의 다른 행에서 이미 참조된 값을 가진 새 행의 삽입을 중지해야 합니다.이 트리거를 사용하려고 했지만 mariaDB와 호환되지 않아 참조 시 비동기 오류가 발생합니다.

CREATE TRIGGER BadgeAlreadyUsed
BEFORE INSERT ON User
REFERENCING NEW AS N 
FOR EACH ROW
WHEN (EXISTS ( SELECT IDBadge FROM User WHERE N.IDBadge = User.IDBadge ))
SIGNAL SQLSTATE '70002' ('Badge already used!!'); 

새로운 구문으로 같은 작업을 수행할 수 있는 방법은 무엇입니까? 감사합니다.

각 데이터베이스(DB2, MariaDB 등)에는 수백 가지의 차이점이 있습니다.아무 추정도 하지 마!

이것이 더 가까울 수 있습니다.

CREATE TRIGGER BadgeAlreadyUsed
    BEFORE INSERT ON User
FOR EACH ROW
BEGIN
    IF (EXISTS ( SELECT IDBadge FROM User
           WHERE NEW.IDBadge = User.IDBadge ))
    THEN
        SIGNAL SQLSTATE '70002'
           SET MESSAGE_TEXT = 'Badge already used!!'; 
    END IF;
END;

최소 3개 이상의 구문 변경 사항이 있습니다(WHEN,NEW,SET).

언급URL : https://stackoverflow.com/questions/46957371/trigger-before-insert-in-mariadb

반응형