반응형
안녕하세요 이번 포스팅에서는 트리거에 대해 작성하려고 합니다.
트리거란 : 특정 이벤트(INSERT/UPDATE/DELETE)가 발생하면 자동적으로 수행되는 PL/SQL 종류 중 하나입니다.
트리거를 이용한다면, 특정 데이터가 조작될 경우 그와 연계된 데이터까지 조작할 수 있는 기능이라고 볼 수 있습니다.
트리거 생성 문법
CREATE [OR REPLACE] TRIGGER 트리거명
BEFORE or AFTER
INSERT or UPDATE or DELETE ON 테이블명
[FOR EACH ROW]
[WHEN 조건]
[DECLARE 변수 선언]
BEGIN
트리거 본문 코드
END;
[OR REPLACE] : 해당 트리거 명으로 등록된 트리거가 있을 경우, 새로 생성하는 트리거로 대체한다.
BEFORE or AFTER : 이벤트가 발생하기 전 후를 지정한다.
INSERT or UPDATE or DELETE : 이벤트 유형을 지정한다.
[FOR EACH ROW] : 각 행에 대해 트리거를 적용할 지를 지정한다.
[WHEN 조건] : 트리거가 실행되는 조건을 기입한다.
[DECLARE 변수 선언] : 트리거 내에서 사용할 변수를 선언한다.
생성 트리거 예시
-- 트리거 생성
CREATE OR REPLACE TRIGGER TRRIGER_NAME
AFTER UPDATE ON "TABLESPACE_NAME"."TABLE_NAME"
FOR EACH ROW
WHEN (old.COLUMN1 = 'N' AND new.COLUMN1 = 'Y')
DECLARE
V_COLUMN2 DATE;
V_COLUMN3 VARCHAR2(20);
V_COLUMN4 VARCHAR2(20);
V_COLUMN5 VARCHAR2(3);
V_COLUMN6 VARCHAR2(4);
V_COLUMN7 VARCHAR2(4);
BEGIN
V_COLUMN2 := :NEW."COLUMN2";
V_COLUMN3 := :NEW."COLUMN3";
V_COLUMN4 := :NEW."COLUMN4";
V_COLUMN5 := :NEW."COLUMN5";
V_COLUMN6 := :NEW."COLUMN6";
V_COLUMN7 := :NEW."COLUMN7";
UPDATE "TABLESPACE_NAME"."TABLE_NAME"
SET COLUMN8 = 'N',
COLUMN2 = V_COLUMN2,
COLUMN3 = V_COLUMN3,
COLUMN4 = COLUMN4 + 1
WHERE COLUMN5 = V_COLUMN5
AND COLUMN6 = V_COLUMN6
AND COLUMN7 = V_COLUMN7
AND COLUMN8 = 'Y';
END TRRIGER_NAME;
-- 트리거 삭제
DROP TRIGGER TRRIGER_NAME;
-- 트리거 조회
SELECT *
FROM USER_TRIGGERS
old는 수정 전의 데이터
new는 수정 후의 데이터 입니다.
반응형
'DB > Oracle' 카테고리의 다른 글
[Oracle] AutoCommit 확인 방법 (0) | 2021.11.17 |
---|---|
[Oracle] SqlPlus에서 BackSpace 키 사용 방법 (0) | 2021.10.22 |
[Oracle] 락 걸린 경우 조치방법 (0) | 2021.08.12 |
[Oracle] 과거 데이터 조회 방법 (0) | 2021.07.30 |
[Oracle] DECODE 사용 방법 (0) | 2021.07.29 |