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 被关闭。