根据条件终止并抛出错误 - DB2 触发器

Terminate and throw errors on conditions - DB2 triggers

更新前我有一个触发器 运行。

CREATE TRIGGER HIST_LOG_UPDT_TR 
BEFORE UPDATE ON HIST_LOG 
REFERENCING     NEW ROW AS N
            OLD ROW AS O
BEGIN
FOR EACH ROW
    BEGIN
    IF (N.STATE_CD=2 AND O.STATE_CD=0)
        RAISE_ERROR('ERR0001', 'THIS IS AN ILLEGAL UPDATE');
    END
END

创建此触发器时出现以下错误。

Error: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=,;RENCING NEW ROW AS N;<space>, DRIVER=3.69.24

虽然 -104 代码表示 ILLEGAL TOKEN,但我无法发现任何错误。

请专家告诉我如何解决这个问题。

raise_error 是函数而不是语句。此外,引用子句语法与您的问题中显示的语法略有不同。

如果您的 Db2 服务器在 Linux 或 Unix 或 Windows 上运行,此替代语法也可能有帮助。

CREATE TRIGGER HIST_LOG_UPDT_TR 
BEFORE UPDATE ON HIST_LOG 
REFERENCING  NEW AS N OLD AS O
FOR EACH ROW
BEGIN
    IF (N.STATE_CD = 2 AND O.STATE_CD = 0) THEN
        SIGNAL SQLSTATE 'ER001' SET MESSAGE_TEXT = 'THIS IS AN ILLEGAL UPDATE';
    END IF;
END