본문 바로가기
DataBase/MySQL with Error

[해결 방법] Error Code: 1064. You have an error in your SQL syntax

by HJ0216 2023. 6. 25.

🐬 기본 환경

- 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 ;로 기본 구분자인 ;를 복원