본문 바로가기

Spring Boot

MariaDB Trigger 추가할 때 SQL syntax 에러 해결

728x90

Spring Boot 에서 .sql 파일로 Trigger를 추가하는데 문제가 발생했습니다.

 

아래는 발생했던 Trigger 추가 예시입니다.

DROP TRIGGER IF EXISTS {트리거명};

DELIMITER |
CREATE TRIGGER {트리거명}
    AFTER INSERT ON {테이블}
    FOR EACH ROW
BEGIN
    UPDATE {대상테이블}
    SET {A} = {B}
    WHERE {C} = {D};
END; |
DELIMITER ;

 

Trigger 문에서 세미콜론을 사용하기 위해 미리 구분자를 | 로 변경 하고, 구문을 마무리 한 후 다시 구분자를 세미콜론으로 지정했습니다. 

 

그런 후 테스트를 위해 추가하려는데

 

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near

 

라는 문법 에러가 발생했습니다. 위의 Drop 구문에서는 문제가 발생하지 않았던걸로 보아 구분자 지정하는데 문제가 생긴걸로 보였습니다.

 

하지만 Trigger 구문에서 세미콜론을 사용해야 하므로 구분자를 지정하는 다른 방법을 찾아야 했습니다.

 

sql:
  init:
    separator: //

 

yml 기준으로 해당 내용을 추가하면 .sql 파일의 구분자가 // 로 변경이 되고 Delimiter 구문을 사용하지 않아도 됩니다.

 

DROP TRIGGER IF EXISTS {트리거명}//

CREATE TRIGGER {트리거명}
    AFTER INSERT ON {테이블}
    FOR EACH ROW
BEGIN
    UPDATE {대상테이블}
    SET {A} = {B}
    WHERE {C} = {D};
END; //

 

수정 후의 구문입니다.

 

 

 


박준호 / 선임연구원

Junho Park / 서비스R&D팀

 

 

junho@userinsight.co.kr

728x90