Mysql 触发器中的多个If条件

Mysql 触发器中的多个If条件,mysql,triggers,Mysql,Triggers,我想写多个if条件来检查触发器中同一个表的不同列的值。我现在正在检查这两个列,我得到了mysql错误 以下是我的情况。请帮助我我做错了什么 IF (OLD.CE_EN_OPTION_ID != NEW.CE_EN_OPTION_ID) THEN INSERT INTO audit_log( BENEFICIARY_ID , TABLE_NAME , FIELD_NAME , OLD_VALUE , NEW_VALUE , EDIT_BY, DATE_TIME ) VALUES ( OLD.BE

我想写多个if条件来检查触发器中同一个表的不同列的值。我现在正在检查这两个列,我得到了mysql错误

以下是我的情况。请帮助我我做错了什么

IF (OLD.CE_EN_OPTION_ID != NEW.CE_EN_OPTION_ID)
THEN
INSERT INTO  audit_log(
BENEFICIARY_ID ,
TABLE_NAME ,
FIELD_NAME ,
OLD_VALUE ,
NEW_VALUE ,
EDIT_BY,
DATE_TIME
)
VALUES (
OLD.BENEFICIARY_ID,  'be_ce_main',  'CE_EN_OPTION_ID', OLD.CE_EN_OPTION_ID, NEW.CE_EN_OPTION_ID, NEW.EDITED_ID,NOW()
);
END IF;

IF(OLD.CE_DM_OPTION_ID != NEW.CE_DM_OPTION_ID)
THEN
INSERT INTO  audit_log(
BENEFICIARY_ID ,
TABLE_NAME ,
FIELD_NAME ,
OLD_VALUE ,
NEW_VALUE ,
EDIT_BY,
DATE_TIME
)
VALUES (
OLD.BENEFICIARY_ID,  'be_ce_main',  'CE_DM_OPTION_ID', OLD.CE_DM_OPTION_ID, NEW.CE_DM_OPTION_ID, NEW.EDITED_ID,NOW()
);
END IF;

您缺少
开始
-
结束
块。 我担心您并没有重写分隔符来指示sql引擎不要执行以默认语句终止符结尾的语句分号。因为您没有定义新的分隔符,所以sql引擎在第一次找到
时假定它是语句的结尾分号。在那里,它失败了,因为语句的语法顺序不正确

请尝试以下操作:

Delimiter //

CREATE TRIGGER 'test_trigger' AFTER UPDATE ON 'be_ce_main' FOR EACH ROW
BEGIN -- this is a must if you have more than one executable statements below

-- your trigger body here

END;
//

Delimiter ;
请参阅


触发器定义是什么样的
创建触发器…
?也发布它。代码的哪一部分是行号
17
test\u TRIGGER(测试触发器)”,在每个行的“be\u ce\u main”更新之后创建触发器ROW@Ravider第二个IF条件从第17行开始。如果我只使用1 IF条件,那么它就工作了accurately@echo_Me完全错误是“您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解要使用的正确语法(OLD.CE_DM_OPTION_ID!=NEW.CE_DM_OPTION_ID),然后插入审计日志(第17行的B)
Delimiter //

CREATE TRIGGER 'test_trigger' AFTER UPDATE ON 'be_ce_main' FOR EACH ROW
BEGIN -- this is a must if you have more than one executable statements below

-- your trigger body here

END;
//

Delimiter ;