多个If触发器中的条件

时间:2014-03-21 10:14:07

标签: mysql triggers

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

#1064(syntax error) at Line # 17.

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

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;

1 个答案:

答案 0 :(得分:0)

您缺少BEGIN - END阻止。 我担心你没有覆盖delimiter来指示sql引擎不执行以default语句终止符;分号结尾的语句。因为你没有定义新的分隔符,所以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