在Triggers中声明变量

时间:2016-10-26 15:47:13

标签: mysql variables triggers mariadb

我在第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;

提前致谢!

1 个答案:

答案 0 :(得分:1)

您必须在创建...之前添加DELIMITER $$

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行的末尾