사용자 도구

사이트 도구


oracle:trigger

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
oracle:trigger [2018/02/22 01:29] – [Compund Trigger] taekguoracle:trigger [2025/04/15 10:05] (현재) – 바깥 편집 127.0.0.1
줄 1: 줄 1:
 ===== Trigger ===== ===== Trigger =====
  
 +==== Trigger 확인 ====
 +<code sql>
 +--2 All Disabled Triggers:
 +select *
 +  from dba_triggers
 + where status!='ENABLED';
 +</code>
 ==== Compund Trigger ==== ==== Compund Trigger ====
 <code sql> <code sql>
줄 10: 줄 17:
   TYPE TYPE_SALED_TAB IS TABLE OF SALED%ROWTYPE;   TYPE TYPE_SALED_TAB IS TABLE OF SALED%ROWTYPE;
   G_SALED_TAB TYPE_SALED_TAB := TYPE_SALED_TAB();   G_SALED_TAB TYPE_SALED_TAB := TYPE_SALED_TAB();
 +  type ty_bookings_hist is table of bookings_hist%rowtype 
 +    index by pls_integer; 
 +  coll_bookings_hist ty_bookings_hist; 
 +  ctr pls_integer := 0;
   BEFORE STATEMENT IS   --명령문 레벨 트리거 BEFORE   BEFORE STATEMENT IS   --명령문 레벨 트리거 BEFORE
   BEGIN   BEGIN
줄 23: 줄 33:
   AFTER EACH ROW IS  --행레벨 트리거 AFTER   AFTER EACH ROW IS  --행레벨 트리거 AFTER
   BEGIN   BEGIN
 +    if INSERTING or UPDATING or DELETING then
 +      G_SALED_TAB.EXTEND;
 +      NULL;
 +    end if;
 +    
 +    ctr := ctr + 1;
 +    dbms_output.put_line('In after each row. booking_id='||:new.booking_id);
 +    coll_bookings_hist(ctr).booking_id := :new.booking_id;
 +    coll_bookings_hist(ctr).mod_dt := sysdate;
 +    coll_bookings_hist(ctr).mod_user := user;
 +    coll_bookings_hist(ctr).old_booking_dt := :old.booking_dt;
 +    coll_bookings_hist(ctr).new_booking_dt := :new.booking_dt;
 +    
     NULL; -- Do something here.     NULL; -- Do something here.
   END AFTER EACH ROW;   END AFTER EACH ROW;
줄 28: 줄 51:
   AFTER STATEMENT IS   --명령문 레벨 트리거 AFTER   AFTER STATEMENT IS   --명령문 레벨 트리거 AFTER
   BEGIN   BEGIN
 +    IF G_SALED_TAB.COUNT() > 0 THEN
 +      FOR i IN G_SALED_TAB.first .. G_SALED_TAB.last LOOP
 +      END LOOP;
 +    END IF;
 +    
 +    forall counter in 1..coll_bookings_hist.count()
 +      insert into bookings_hist
 +      values coll_bookings_hist(counter);
     NULL; -- Do something here.     NULL; -- Do something here.
   END AFTER STATEMENT;   END AFTER STATEMENT;
oracle/trigger.1519262995.txt.gz · 마지막으로 수정됨: 2025/04/15 10:05 (바깥 편집)