🐬 기본 환경
- IDE: MySQL Workbench
- DataBase: MySQL
발생 Error
MySQL로 다음 Source Code를 실행할 경우,
1
2
3
4
5
6
7
8
9
10
|
CREATE TRIGGER tempSeqTrigger BEFORE INSERT ON tempUser
FOR EACH ROW
BEGIN
DECLARE sequence_value INT;
INSERT INTO tempSeq VALUES (NULL);
SET sequence_value = LAST_INSERT_ID();
SET NEW.id = CONCAT(NEW.type, LPAD(sequence_value, 6, '0'));
END;
|
⚠️ 다음과 같은 오류 발생
You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use
발생 원인
trigger안의 구분자(;)가 SQL상 기본 구분자(;)와 충돌
해결 방법
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
DELIMITER //
CREATE TRIGGER tempSeqTrigger BEFORE INSERT ON tempUser
FOR EACH ROW
BEGIN
DECLARE sequence_value INT;
INSERT INTO tempSeq VALUES (NULL);
SET sequence_value = LAST_INSERT_ID();
SET NEW.id = CONCAT(NEW.type, LPAD(sequence_value, 6, '0'));
END//
DELIMITER ;
|
DELIMITER 문을 사용하여 기본 구분자인 ;와 충돌하지 않도록 임시 구분자를 설정
DELIMITER //
: //를 구분자로 사용하겠다는 의미
: END//로 블록을 종료하고 DELIMITER ;로 기본 구분자인 ;를 복원