oracle中的复合触发器
我有一个复合触发器,在after语句中,我更新了另一个表,该表也有一个复合触发器,如下代码所示:oracle中的复合触发器,oracle,plsql,triggers,oracle11g,Oracle,Plsql,Triggers,Oracle11g,我有一个复合触发器,在after语句中,我更新了另一个表,该表也有一个复合触发器,如下代码所示: create or replace trigger TRIGGER for insert or update on TABLE COMPOUND trigger after STATEMENT is begin update THEOTHERTABLE set VALUE = VALUE + 1 where COD = 1; end after STATEMENT; end; 更新只是一个简
create or replace
trigger TRIGGER
for insert or update on TABLE
COMPOUND trigger
after STATEMENT is
begin
update THEOTHERTABLE set VALUE = VALUE + 1 where COD = 1;
end after STATEMENT;
end;
更新只是一个简单的更新,看看是否有效。我想让它触发另一张桌子上的触发器,但它只在触发器不是复合触发器时才会触发
这是Oracle复合触发器的问题,还是我不了解的功能?我已尝试重新创建您的场景,它似乎对我很有效。所以我认为你应该再看看你的实现。寻找您所编码的内容与下面的内容之间的差异,也许这就是答案所在 这是我的触发器
SQL> create or replace
2 trigger t1_compound
3 for insert or update on t1
4 compound trigger
5
6 after statement is
7 begin
8 update t2 set t1_id = nvl(t1_id,0) + 1 where cod = 12;
9 end after statement;
10 end;
11 /
Trigger created.
SQL>
SQL> create or replace
2 trigger t2_compound
3 for insert or update on t2
4 compound trigger
5
6 after statement is
7 begin
8 update t3 set t2_id = nvl(t2_id,0) + 1 where cod = 12;
9 end after statement;
10 end;
11 /
Trigger created.
SQL>
。。。这是测试数据
SQL> select id, cod from t1
2 /
ID COD
---------- ----------
1 12
SQL> select id, cod, t1_id from t2
2 /
ID COD T1_ID
---------- ---------- ----------
11 12
SQL> select id, cod, t2_id from t3
2 /
ID COD T2_ID
---------- ---------- ----------
111 12
SQL>
。。。这就是当我对第一个表进行更新时发生的情况
SQL> update t1 set dt = sysdate
2 where id = 1
3 /
1 row updated.
SQL> select id, cod, t1_id from t2
2 /
ID COD T1_ID
---------- ---------- ----------
11 12 1
SQL> select id, cod, t2_id from t3
2 /
ID COD T2_ID
---------- ---------- ----------
111 12 1
SQL>
我认为它不应该工作…如果您为另一个表创建一个过程并从此触发器调用该过程会更好。如果您在编译触发器后这样做,它会工作,但是如果您再次尝试,即使使用其他数据,它不会更新其他表其他表上的触发器是什么样子的?它是一个简单的触发器,在更新其他表时触发。我已经尝试在每行之前和之后将输出输出到dbms_,它只是在编译触发器后第一次触发