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

时间:2015-04-10 12:48:00

标签: mysql syntax triggers

当我尝试运行我的表/触发器创建脚本时,出现以下错误:

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'变量'。我正在改变它们,并会暂时更新。

1 个答案:

答案 0 :(得分:2)

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 ;

此外,我在上面的触发器中使用new和old更改了TUPLE,您可能需要根据需要调整逻辑。

相关问题