카테고리 없음
[신탁] 오라클의 복합 트리거
행복을전해요
2021. 1. 13. 10:40
나는 당신의 시나리오를 다시 만들려고 시도했지만 잘 작동하는 것 같습니다. 따라서 구현을 다시 살펴 봐야한다고 생각합니다. 당신이 코딩 한 것과 여기에 따르는 것 사이의 차이점을 찾으십시오. 아마도 그것이 답이있는 곳일 것입니다.
내 트리거는 다음과 같습니다.
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>
-------------------트리거를 컴파일 한 후 실행하면 작동하지만 다른 데이터로도 다시 시도하면 THEOTHERTABLE이 업데이트되지 않습니다.
-------------------나는 그것이 작동해야한다고 생각하지 않는다 ... THEOTHERTABLE에 대한 프로 시저를 만들고이 트리거에서 해당 프로 시저를 호출하면 더 좋을 것입니다.
출처
https://stackoverflow.com/questions/2006203