纠正我在 mysql 触发器中的语法错误

Posted

技术标签:

【中文标题】纠正我在 mysql 触发器中的语法错误【英文标题】:Rectify my syntax error in mysql triggers 【发布时间】: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 行的 '' 附近使用

请帮忙

【问题讨论】:

【参考方案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 行仍显示错误。请帮帮我。 一个错误?我想知道错误是什么。或者你的代码现在是什么样子。但我不会猜测。

以上是关于纠正我在 mysql 触发器中的语法错误的主要内容,如果未能解决你的问题,请参考以下文章

如果存在 MySQL 触发器语法错误

Trigger IF语句中的MySQL语法错误?

MySQL 触发语法错误

phpmyAdmin 中的 MySQL 触发器错误

phpmyadmin mysql 触发语法错误

空字符串无法解释的MySQL错误#1064创建更新触发器后?