* Youtube Link - https://www.youtube.com/watch?v=0KxIvQRPIIs&list=PLVsNizTWUw7FzFgU1qe-n7_M7eMFA9d-f&index=32
BEFORE 트리거
INSERT의 값이 테이블에 들어가기 전에 :NEW 임시 테이블에 들어가요
DELETE의 값이 테이블에서 지워지고, :OLD 테이블에 예전 값이 입력된다.
UPDATE의 값이 :NEW 테이블에 들어가고 테이블에 새값이 들어가고 :OLD 테이블에 예전 값이 들어간다.
BEFORE 트리거 UPDATE문 실습
데이터를 삽입하기 전에 :NEW 테이블에 데이터가 저장된다.
그러면 그림처럼 자동으로 새 테이블에 :NEW 테이블에 있는 데이터가 저장된다.
특정 테이블의 열 이름을 트리거로 조정할 수 있다.
이처럼 특정 이벤트가 발생을 할 때 방아쇠 같은 트리거가 발생을 해서
CREATE OF REPLACE TRIGGER trg_columnChange
AFTER UPDATE OF userName ON userTBL FOR EACH ROW
BEGIN RAISE_APPLICATOIN_ERROR(-20888, '이름은 변경이 안됩니다. !!!'); END;
userName 컬럼에 UPDATE문을 날리면 이후에 자동으로 트리거가 실행된다.
그러면 BEGIN END 안의 구문이 실행된다.
RAISE_APPLICATOIN_ERROR(-20888, '이름은 변경이 안됩니다. !!!'); 는
에러를 발생시키는 구문이다.
INSTEAD OF 트리거
배송 조회 뷰 트리거 실습
다음 뷰는 조인을 한 뷰이다.
그래서 INSERT가 어렵다.
하지만 트리거를 통해서 해결이 가능하다.
INSERT INTO userTBL 을 하고
INSERT INTO buyTBL 을 한다.
그러면 뷰 INSERT가 가능하다.
만든 뷰 삭제는 이렇게 가능하다.
뷰는 스키마의 트리거 탭에서 확인이 가능하다.
다중 트리거와 중첩 트리거
다중 트리거란 하나의 테이블에 동일한 트리거가 여러개 부착되어 있는 것
중첩 트리거란 트리거가 또 다른 트리거를 작동시키는 것을 말한다.
구매 테이블 물품 테이블 그리고 배송 테이블을 통해서
구매 테이블에 입력되면 물품 테이블에 개수 감소 시키고, 배송 테이블에 건수 입력 시키는 과정을
빵빵 연쇄적인 트리거로 작동을 시킨다.
그래서 INSERT를 시키면 자동으로 트리거로 인해서
연쇄적으로 연관된 테이블들에 입력되고 수정되고 삭제가 이루어진다.
감사합니다.
'Oracle' 카테고리의 다른 글
[이것이 오라클이다] 12장 1교시 : [Oracle] 웹 사이트 개발환경 구축 (1) | 2024.11.13 |
---|---|
[이것이 오라클이다] 11장 3교시 : [Oracle] 재귀 트리거, 순차번호의 자동입력 트리거 (2) | 2024.11.13 |
[이것이 오라클이다] 11장 1교시: [Oracle] 트리거 개념과 사용법, AFTER 트리거, :NEW와 :OLD 테이블 (1) | 2024.11.12 |
[이것이 오라클이다] 10장 4교시: [Oracle] 커서, 패기 (1) | 2024.11.12 |
[이것이 오라클이다] 10장 3교시: [Oracle] 함수의 개념, 함수 실습, 테이블 반환 함수 (2) | 2024.11.11 |