Create After Trigger 有效,但 Create Before 无效

Create After Trigger works but Create Before doesn't

如果我尝试创建一个带有 After 的触发器,它工作正常。

CREATE TRIGGER UDO.TG_TEST AFTER UPDATE
    OF LAST_BACKUP ON
    UDO.BACKUP FOR EACH ROW
INSERT
    INTO
    UDO.BACKUP_HIST(BACKUP_ID,
    INST_NAME,
    INST_ID,
    DB_NAME,
    DB_ID,
    SERVER,
    RESTORE_TS,
    LAST_BACKUP,
    BACKUP_TYP,
    BACKUP_DAUER,
    BACKUP_ORT)
SELECT
    BACKUP_ID,
    INST_NAME,
    INST_ID,
    DB_NAME,
    DB_ID,
    SERVER,
    RESTORE_TS,
    LAST_BACKUP,
    BACKUP_TYP,
    BACKUP_DAUER,
    BACKUP_ORT
FROM UDO.BACKUP

但是,如果我执行完全相同的创建操作,但使用之前或之前没有级联:

CREATE TRIGGER UDO.TG_TEST NO CASCADE BEFORE UPDATE
    OF LAST_BACKUP ON
    UDO.BACKUP FOR EACH ROW
INSERT
    INTO
    UDO.BACKUP_HIST(BACKUP_ID,
    INST_NAME,
    INST_ID,
    DB_NAME,
    DB_ID,
    SERVER,
    RESTORE_TS,
    LAST_BACKUP,
    BACKUP_TYP,
    BACKUP_DAUER,
    BACKUP_ORT)
SELECT
    BACKUP_ID,
    INST_NAME,
    INST_ID,
    DB_NAME,
    DB_ID,
    SERVER,
    RESTORE_TS,
    LAST_BACKUP,
    BACKUP_TYP,
    BACKUP_DAUER,
    BACKUP_ORT
FROM UDO.BACKUP

我收到以下错误:

SQL-Fehler [42987]: The trigger "UDO.TG_TEST" is defined with an unsupported triggered SQL statement.. SQLCODE=-797, SQLSTATE=42987, DRIVER=3.72.44

我根据IBM DB2 documentation检查了语法,我认为是正确的。

我是不是忽略了什么?

编辑:

平台:LUW, DB2 服务器版本:11.1.4.4

我要实现的实际目标是在 UDO.BACKUP 更新之前将数据从 UDO.BACKUP 存档到 UDO.BACKUP_HIST。

是的,您在提供的 link 中忽略了以下内容:

NO CASCADE BEFORE
Specifies that the trigger is a before trigger. Db2 executes the triggered action before it applies any changes caused by an insert, delete, or update operation on the subject table. It also specifies that the triggered action does not activate other triggers because the triggered action of a before trigger cannot contain any updates.
NO CASCADE BEFORE must not be specified when view-name is also specified. FOR EACH ROW must be specified for a BEFORE trigger.

“更新”是指 INSERT / UPDATE / DELETE / MERGE 语句。