웹 프로그래밍

트리거(TRIGGER) - ORACLE DB 본문

DB(SQL)/oracle

트리거(TRIGGER) - ORACLE DB

B. C Choi 2021. 9. 28. 21:32
반응형

 

■ 트리거(TRIGGER)란?

 1. 연쇄 작용, 방아쇠 같은 의미로, 특정 명령어를 실행할 때 동시에 실행될 수 있는 로직으로 정의하는 기법.

 2. 테이블이나 뷰가 INSERT, UPDATE, DELETE 등의 DML문에 의해 변경될 경우 자동으로 실행될 내용을 정의하여 저장하는 객체.

 


 

■ 문법

CREATE OR REPLACE TRIGGER <트리거명> <시점> <이벤트> ON <테이블|뷰 이름>
[FOR EACH ROW] -- 트리거 유형
BEGIN
	-- 트리거 작동 내용
END;
/

 

- 이벤트 : INSERT, UPDATE, DELETE

- 시점 : BEFORE(이벤트 전), AFTER(이벤트 후)
- FOR EACH ROW : 트리거 유형
   1. 문장 트리거 : 이벤트 발생 시 테이블, 뷰 단위로 한 번만 실행되는 유형
   2. 행 트리거 : 이벤트 발생 시 실행 내용이 행 단위로 실행 되는 유형

 

 

- 트리거 실행 방법

SELECT * FROM ALL_TRIGGERS; -- 모든 트리거 목록 조회
SELECT * FROM USER_TRIGGERS; -- 해당 사용자의 트리거 목록 조회
SELECT * FROM USER_SOURCE; -- 트리거 상세 코드 조회
SELECT * FROM USER_SOURCE WHERE NAME = '트리거명'; -- 특정 트리거의 상세 코드 조회

 

 

- 삭제하는 방법
DROP TRIGGER TEST_TRIGGER3;


예제

DEPARTMENT 테이블의 L1 -> R1으로 변경(UPDATE 사용)

-- 문장 트리거
CREATE OR REPLACE TRIGGER TEST_TRIGGER2 AFTER UPDATE ON DEPARTMENT
BEGIN
    DBMS_OUTPUT.PUT_LINE('부서가 변경되었습니다.');
END;
/

UPDATE DEPARTMENT SET LOCATION_ID = 'R1' WHERE LOCATION_ID = 'L1';
-- 행 트리거
CREATE OR REPLACE TRIGGER TEST_TRIGGER3 AFTER UPDATE ON DEPARTMENT
FOR EACH ROW
BEGIN
    DBMS_OUTPUT.PUT_LINE('부서가 변경되었습니다.');
END;
/
UPDATE DEPARTMENT SET LOCATION_ID = 'R1' WHERE LOCATION_ID = 'L1';
반응형