메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

오라클 트리거

DB CAFE
Dbcafe (토론 | 기여)님의 2024년 10월 1일 (화) 01:08 판 (새 문서: == 트리거 생성 == https://docs.oracle.com/cd/E11882_01/appdev.112/e25519/img/create_trigger.gif <source lang=sql> CREATE OR REPLACE TRIGGER TR_AGA02_TEST BEFORE INSERT OR UPDATE OR DELETE ON TB_TRG_TEST FOR EACH ROW DECLARE BEGIN IF (:NEW.SLIP_DT >= '20191201' OR :OLD.SLIP_DT >= '20191201') THEN RAISE_APPLICATION_ERROR('-20001', '트리거검사오류: SLIP_DT 일자가 20191201보다 같거나 큰 값은 입력할 수 없습니다.'); END IF; END; </sourc...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

트리거 생성

create_trigger.gif


CREATE OR REPLACE TRIGGER TR_AGA02_TEST
  BEFORE INSERT OR UPDATE OR DELETE ON TB_TRG_TEST
  FOR EACH ROW
DECLARE
BEGIN
  IF (:NEW.SLIP_DT >= '20191201' OR :OLD.SLIP_DT >= '20191201') THEN  
      RAISE_APPLICATION_ERROR('-20001', '트리거검사오류: SLIP_DT 일자가 20191201보다 같거나 큰 값은 입력할 수 없습니다.');
  END IF;
END;

트리거 삭제

DROP TRIGGER TR_AGA02_TEST;

트리거 활성화

ALTER TRIGGER reorder ENABLE;

테이블에 걸린 트리거 전체 활성화

ALTER TABLE inventory
    ENABLE ALL TRIGGERS;

트리거 비활성화

ALTER TRIGGER reorder DISABLE;

테이블에 걸린 트리거 전체 비활성화

ALTER TABLE inventory
     DISABLE ALL TRIGGERS;
SELECT DISTINCT 'ALTER TABLE '||TABLE_OWNER||'.'||TABLE_NAME|| ' DISABLE ALL TRIGGERS;' DIS_TRIGGER
 FROM DBA_TRIGGERS
 WHERE OWNER IN (
 'TB_EMP'
,'TB_DEPT')
 ;

유저 트리거 전체 비활성화 프로시져

  • 트리거를 실행할 유저로 로그인 할것
BEGIN
FOR i IN (SELECT trigger_name
FROM user_triggers) LOOP

EXECUTE IMMEDIATE 'ALTER TRIGGER ' || i.trigger_name || ' DISABLE';
END LOOP;
END;