【发布时间】:2020-12-30 01:57:21
【问题描述】:
我必须从给定的 Oracle 触发器更改:
CREATE OR REPLACE TRIGGER MY_TRIGGER
AFTER UPDATE OF STATUS ON T_TABLE_A
FOR EACH ROW
BEGIN
UPDATE T_TABLE_B T
SET T.STATUS = :NEW.STATUS
WHERE T.REF_ID = :NEW.ID;
END;
/
到 Oracle 复合触发器。效果必须相同。我现在的做法是:
CREATE OR REPLACE TRIGGER MY_NEW_TRIGGER
for insert or update on T_TABLE_A
compound trigger
before statement -- STUB
is
begin
null;
end before statement;
before each row
is
begin
end before each row;
after each row -- STUB
is
begin
--IDEA: collect ids of changed records (T_TABLE_A) here >> in a global variable? array?
end after each row;
after statement -- STUB
is
begin
--IDEA: Bulk Update of T_TABLE_B (goal is: update T_TABLE_B.STATUS column; must be the same as T_TABLE_A.STATUS)
end after statement;
end;
/
但作为一名 Java 开发人员,我很难找到变量、数组和简单 DB 脚本的正确语法,因此任何方法都有帮助。
开始的方法标记为“IDEA”。
【问题讨论】:
标签: sql database oracle triggers