- 문장트리거 : 영향 받는 행이 없어도 한번은 실행
- 행트리거 : 테이블이 이벤트 영향받을때마다 실행
FOR EACH ROW 구절 사용
OLD : 트리거가 처리한 레코드 원래값을 저장함
NEW : 새값을 포함
이 두가지 값을 가지고 변경 전,후의 데이터 조작 가능
EX) :OLD.VALUE, :NEW.NO
사용할때는 앞에 : 을 써야함
DDL 이벤트 트리거 : 트리거활용해 DDL작업을 함
데이터베이스 이벤트 트리거 : DB내 생기는 일들을 관리하기 위해 생성하는 트리거
CREATE OR REPLACE TRIGGER 트리거명
트리거 실행 시점 [BEFORE/AFTER]
이벤트 [INSERT | UPDATE | DELETE]
ON {테이블이름 | 뷰이름| 스키마 | 데이터베이스}
[FOR EACH ROW\ --생략시 문장레벨트리거
BEGIN
END;
트리거 조회
SELECT * FROM USER_TRIGGERS;
테이블의 데이터가 삭제될때 백업테이블에삭제한 시간과 데이터를 기록하는 트리거
1. 원본테이블, 백업테이블을 create
2. 임의의 데이터 원본에 insert
CREATE OR REPLACE TRIGGER TRI_BACKUP
AFTER DELETE ON TBL_TEST
FOR EACH ROW --행레벨 테이블일때 써야됨
BEGIN
INSERT INTO TBL_TEST_BACK
VALUES(:OLD.NO, :OLD.NAME, SYSDATE);
END;
삭제
DELETE FROM TBL_TEST WHERE NO!=4;
결과 확인시, 삭제된 행이 그대로 INSERT되어있다.
https://bbinya.tistory.com/24#%EC%A-%BC%EC%-A%--%--%ED%-A%B-%EB%A-%AC%EA%B-%B-%--%EC%-C%A-%ED%--%--