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;
/
댓글남기기