根据条件终止并抛出错误 - 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
更新前我有一个触发器 运行。
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