gpt4 book ai didi

mysql - 触发器中的多个 If 条件

转载 作者:行者123 更新时间:2023-11-30 00:30:31 26 4
gpt4 key购买 nike

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

#1064(syntax error) at Line # 17.

以下是我的条件。请帮助我我做错了什么。

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;

最佳答案

您缺少 BEGIN - END block 。而且我担心您没有覆盖 delimiter 来指示 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 ;

引用:

MySQL: Create Trigger Syntax

关于mysql - 触发器中的多个 If 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22555856/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com