首页 文章

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

提问于
浏览
0

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

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 回答

  • 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 ,您可能需要根据需要调整逻辑 .

相关问题