===== Trigger ===== ==== Trigger 확인 ==== --2 All Disabled Triggers: select * from dba_triggers where status!='ENABLED'; ==== Compund Trigger ==== CREATE OR REPLACE TRIGGER 트리거이름 FOR 트리거링 이벤트 ON 테이블명 COMPOUND TRIGGER -- 전역 변수 선언 g_global_variable VARCHAR2(10); TYPE TYPE_SALED_TAB IS TABLE OF SALED%ROWTYPE; 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 BEGIN NULL; -- Do something here. END BEFORE STATEMENT; BEFORE EACH ROW IS --행레벨 트리거 BEFORE BEGIN NULL; -- Do something here. END BEFORE EACH ROW; AFTER EACH ROW IS --행레벨 트리거 AFTER 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. END AFTER EACH ROW; AFTER STATEMENT IS --명령문 레벨 트리거 AFTER 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. END AFTER STATEMENT; END ;