programing

트리거 내부의 변수 선언

testmans 2023. 11. 1. 22:12
반응형

트리거 내부의 변수 선언

5번 라인에서 오류가 발생합니다(첫번째 선언의 세미콜론에서), MariaDB와 일치하지 않는 부분이 있습니다.비슷한 문제를 가지고 있거나, 이런 문제를 해결하는 방법을 아는 사람?

CREATE TRIGGER incative
BEFORE DELETE
ON users FOR EACH ROW
BEGIN
    DECLARE _user INT;
    DECLARE username  VARCHAR(150),_password  VARCHAR(150),
            email  VARCHAR(320),ip_address varchar(150),
            _data VARCHAR(120),_time VARCHAR(150);
    DECLARE _active int DEFAULT 1;

    SELECT * INTO _user, username, _password, email, ip_address,
                  _data, _time, _active
        FROM users WHERE ID_User = old.ID_User

    INSERT into users(_user, username, _password, email, ip_address,
                      _data, _time, _active)
END;

미리 감사드립니다!

생성하기 전에 DELMITER $$을(를) 추가해야 합니다.

DELIMITER $$
CREATE TRIGGER incative
BEFORE DELETE .....

더 많은 정보를 원하시면 이 답변을 확인하실 수 있습니다: https://stackoverflow.com/a/1346645/1548932

mariaDB의 경우는 모르지만, Mysql을 사용하는 경우 6번 행을 다음으로 변경해야 합니다.

DECLARE username,_password,email ,ip_address,_data,_time VARCHAR(150);

또는 길이가 다른 경우 다음과 같이 한 줄에 하나의 변수를 선언해야 합니다.

DECLARE username  VARCHAR(150)
Declare email  VARCHAR(320) 

그리고 마지막으로 잊지마요; 8번과 10번 줄 끝에.

언급URL : https://stackoverflow.com/questions/40266717/declaring-variables-inside-triggers

반응형