【问题标题】:Rectify my syntax error in mysql triggers纠正我在 mysql 触发器中的语法错误
【发布时间】:2022-01-04 22:47:05
【问题描述】:

所以我尝试创建一个 mysql 触发器(在更新之前),它将检查员工表的哪个属性正在更新,我将向另一个表“Update_Message”添加一条语句,该语句指示更新的属性。这是我的代码:

DELIMITER //

CREATE TRIGGER update_col
BEFORE UPDATE
ON Employee FOR EACH ROW
BEGIN
    DECLARE Msg VARCHAR(100);
    SET Msg = '';
    IF NEW.eid!=OLD.eid THEN 
       SET Msg = CONCAT(Msg,"trying to update eid");
    ELSE IF STRCMP(NEW.ename,OLD.ename) = 0 THEN
       SET Msg = CONCAT(Msg,"trying to update ename");
    ELSE IF STRCMP(NEW.eaddress,OLD.eaddress) = 0 THEN
       SET Msg = CONCAT(Msg,"trying to update eaddress");
    ELSE
       SET Msg = CONCAT(Msg,"trying to update emonthlysalary");
    DELETE FROM Update_Message;
    INSERT INTO Update_Message (Message) VALUES (Msg);
END;
// 

它指出了一个语法错误:ERROR 1064 (42000): You have an error in your SQL syntax;检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在第 17 行的 '' 附近使用

请帮忙

【问题讨论】:

    标签: mysql sql syntax triggers syntax-error


    【解决方案1】:

    阅读https://dev.mysql.com/doc/refman/8.0/en/if.html

    IF search_condition THEN statement_list
        [ELSEIF search_condition THEN statement_list] ...
        [ELSE statement_list] 
    END IF
    

    您缺少必须完成此语句的END IF

    【讨论】:

    • 感谢您的提示,但即便如此,最后的 INSERT 行仍显示错误。请帮帮我。
    • 一个错误?我想知道错误是什么。或者你的代码现在是什么样子。但我不会猜测。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 2013-01-18
    • 1970-01-01
    相关资源
    最近更新 更多