MySQL 在 END 附近创建触发器语法错误

MySQL Create Trigger Syntax Error near END

当我尝试 运行 我的 table/trigger 创建脚本时,出现以下错误:

ERROR 1064 (42000) at line 19: 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 'SET NEW.fines_remaining = NEW.total_fines;
            END IF;
    END' at line 5

以下是导致错误的 CREATE TRIGGER 代码:

DELIMITER //
CREATE TRIGGER fines_trigger BEFORE INSERT ON student
    FOR EACH ROW
    BEGIN
            IF TUPLE.fines_remaining > TUPLE.total_fines
                    SET NEW.fines_remaining = NEW.total_fines;
            END IF;
    END; //
DELIMITER ;

我不明白为什么会这样,我觉得语法没问题,但显然不是,因为会抛出一些错误。

编辑:发布此消息后,我立即注意到在我弄清楚 'OLD' 和 'NEW' 之前我仍然使用这些 TUPLE 'variables'。我正在更改它们并会立即更新。

您在 if 条件

之后缺少 then
DELIMITER //
CREATE TRIGGER fines_trigger BEFORE INSERT ON student
    FOR EACH ROW
    BEGIN
            IF new.fines_remaining > old.total_fines then
                    SET NEW.fines_remaining = NEW.total_fines;
            END IF;
    END; //
DELIMITER ;

另外TUPLE我在上面的触发器里改了new和old,你可能需要根据自己的需要调整逻辑。