[오라클]트리거 생성, 삭제
안녕하세요.
오늘은 오라클에서 트리거를 생성하고
실행시켜 보겠습니다.
트리거란?
insert, update, delete 문이 table에 대해 실행될때 수행되는 프로시저이다.
(어떠한 데이터에 변화가 이루어졌을때 트리거가 실행된다.)
- 트리거는 table과 별도로 database에 저장
- view에 대해서가 아니라 table에 관래 정의
트리거 생성 쿼리
CREATE OR REPLACE TRIGGER TRG_DEPT
AFTER
UPDATE ON dept
FOR EACH ROW
DECLARE
-- 변수를 선언할 때는 DECLARE문을 사용
v_test CHAR(100);
BEGIN
DBMS_OUTPUT.PUT_LINE('변경 전 컬럼 값 : ' ||:old.dname);
DBMS_OUTPUT.PUT_LINE('변경 후 컬럼 값 : ' || :new.dname);
v_test := :old.dname;
DBMS_OUTPUT.PUT_LINE('변수 값 : ' || v_test);
END;
/
쿼리를 살펴보시면
트리거 이름 : TRG_DEPT
테이블 대상 : dept
설명 : dept 테이블이 update될때 트리거 실행
색칠된 곳은 트리거의 옵션 입니다.
After, Before가 있으며
dept 테이블의 update 이후 or 이전 실행 여부 설정 입니다.
빨간색 글씨는
update문 이전의 데이터를 나타냅니다.
사용법은
:old.컬럼, :new.컬럼
입니다.
update문 실행
update dept SET dname='RESEARCH_Mod' WHERE deptno in ('20');
트리거 실행 결과
트리거 삭제
DROP PROCEDURE TRG_DEPT;
'개발 > DB' 카테고리의 다른 글
[oracle, pgadmin 등] to_char 소수점 처리 하기 (0) | 2018.05.29 |
---|---|
[oracle]오라클 줄바꿈 처리 및 줄바꿈 제거(chr) (2) | 2018.04.30 |
[오라클]oracle 여러 테이블 컬럼 select (union all) (0) | 2018.02.14 |
postgresql select 해서 update 하기 (join 활용) (0) | 2017.12.15 |
[oracle] cursor를 이용한 loop 돌리기 (2) | 2017.11.23 |
[posgreSql] pgAdmin을 이용하여 데이터 백업 및 복구하기 (2) | 2017.11.13 |
postgresql loop update 함수 만들기 (0) | 2017.10.10 |