pl/sql 트리거

최대 1 분 소요

PL/SQL 트리거

  • 내부적으로 PL/SQL 블록이 실행된다.
  • 권한이 있어야 사용가능하다.
  • 로그인시 누가 들어왔는지 확인할 때 많이 쓰임…
  • 실무에 많이 사용안함
    • 왜? 트리거가 작동 안하는 경우가 생기게 될 경우 사람이 안된 부분을 찾아넣어야 하는 귀찮음이 생김…
    • 대신 mview를 사용하거나, 툴을 사서 사용거나…, 프로그래밍 적으로 처리한다…

트리거를 만드는 예제

-- 트리거 기본 1
CREATE OR REPLACE TRIGGER testTrg --트리거 이름
    AFTER DELETE OR UPDATE -- 삭제 및 수정 후에 자동하게 지정
    ON testTBL --트리거를 부착할 테이블
    FOR EACH ROW -- 각 행마다 적용됨
BEGIN
    DBMS_OUTPUT.PUT_LINE('트리거 작동');
END;


-- 트리거 사용하여 변경이력 쌓기
CREATE OR REPLACE TRIGGER trg_BackupUserTBL --트리거 이름
    AFTER UPDATE OR DELETE -- 삭제, 수정 후에 작동하도록 지정
    ON userTBL -- 트리거를 부착할 테이블
    FOR EACH ROW -- 각 행마다 적용
DECLARE
    v_modType NCHAR(2); -- 변경타입
BEGIN
    IF UPDATING THEN -- 업데이트 되었다면.
        v_modeType := '수정';
    ELSIF DELETING THEN -- 삭제되었다면.
        v_modeType := '삭제';
    END IF;
    -- :OLD 테이블의 내용(변경 전의 내용)을 백업 테이블에 삽입
        -- :OLD란... = 트리거가 생성한 변경전 데이터를 갖는 임시 테이블, 
        -- :NEW란... = 트리거가 생성한 변경된 데이터를 갖는 임시 테이블, 
    INSERT INTO backup_userTBL VALUES(:OLD.userID, :OLD.userName, :OLD.birthr);
END trg_BackupUserTBL;
/

댓글남기기