我在第 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;
提前致谢!
最佳答案
您必须在创建之前添加 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 行末尾
关于mysql - 在触发器内声明变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40266717/