MySQL 更新触发器后 - 隐藏的语法错误
MySQL after update trigger - hidden syntax error
无法在我的本地测试数据库 (MySQL 5.6) 上创建以下触发器,我不明白为什么。
DELIMITER //
CREATE TRIGGER write_status_history AFTER UPDATE ON request
FOR EACH ROW
BEGIN
DECLARE snew CHAR;
DECLARE sold CHAR;
DECLARE unew CHAR;
DECLARE uold CHAR;
-- Status change
IF NEW.status <> OLD.status THEN
SET unew = (SELECT username FROM ta_users WHERE id = NEW.ta_users_id);
SET snew = (SELECT name FROM status WHERE id = NEW.status);
SET sold = (SELECT name FROM status WHERE id = OLD.status);
INSERT INTO history (`request_id`, `content`)
VALUES(NEW.id, CONCAT('Statuswechsel von ', sold, ' nach ', snew, ' durchgeführt von ', user, '.'));
-- User change
ELSE IF NEW.ta_users_id <> OLD.ta_users_id THEN
SET unew = (SELECT username FROM ta_users WHERE id = NEW.ta_users_id);
SET uold = (SELECT username FROM ta_users WHERE id = OLD.ta_users_id);
INSERT INTO history (`request_id`, `content`)
VALUES(NEW.id, CONCAT('Bearbeiter gewechselt von ', uold, ' nach ', unew, '.'));
END IF;
END
//
DELIMITER ;
如果我尝试启动查询,我会收到此错误消息,指出存在语法错误:
Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 21.
MySQL Workbench,但是,将鼠标悬停在最后一个 END
.
上时报告 Syntax Error: missing 'if'
你知道如何修复这个语法错误吗?我已经尝试在最后一个 END
中添加一个分号,但没有帮助 - 同样的错误。
Mysql else-if
等于
elseif
当你给出 space 时,它会考虑 else
,然后是另一个 if
,并期望内部 if
被关闭。
无法在我的本地测试数据库 (MySQL 5.6) 上创建以下触发器,我不明白为什么。
DELIMITER //
CREATE TRIGGER write_status_history AFTER UPDATE ON request
FOR EACH ROW
BEGIN
DECLARE snew CHAR;
DECLARE sold CHAR;
DECLARE unew CHAR;
DECLARE uold CHAR;
-- Status change
IF NEW.status <> OLD.status THEN
SET unew = (SELECT username FROM ta_users WHERE id = NEW.ta_users_id);
SET snew = (SELECT name FROM status WHERE id = NEW.status);
SET sold = (SELECT name FROM status WHERE id = OLD.status);
INSERT INTO history (`request_id`, `content`)
VALUES(NEW.id, CONCAT('Statuswechsel von ', sold, ' nach ', snew, ' durchgeführt von ', user, '.'));
-- User change
ELSE IF NEW.ta_users_id <> OLD.ta_users_id THEN
SET unew = (SELECT username FROM ta_users WHERE id = NEW.ta_users_id);
SET uold = (SELECT username FROM ta_users WHERE id = OLD.ta_users_id);
INSERT INTO history (`request_id`, `content`)
VALUES(NEW.id, CONCAT('Bearbeiter gewechselt von ', uold, ' nach ', unew, '.'));
END IF;
END
//
DELIMITER ;
如果我尝试启动查询,我会收到此错误消息,指出存在语法错误:
Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 21.
MySQL Workbench,但是,将鼠标悬停在最后一个 END
.
Syntax Error: missing 'if'
你知道如何修复这个语法错误吗?我已经尝试在最后一个 END
中添加一个分号,但没有帮助 - 同样的错误。
Mysql else-if
等于
elseif
当你给出 space 时,它会考虑 else
,然后是另一个 if
,并期望内部 if
被关闭。