티스토리 뷰

DATABASE/SQL

[SQL] TRIGGER

진심스테이크 2018. 4. 23. 16:59

 

Trigger : 특정 이벤트가 발생할 때마다 자동으로 실행되는 PL/SQL 블럭

- 개발자가 호출하여 사용할 수 없음

- 데이터 베이스내에 오브젝트로 저장되어 관리

- DML Trigger가 가장 많이 사용

 

 

특징

- 트리거를 생성하려면 권한이 필요

- 트리거를 이루는 몸체 부분에 TCL 명령은 포함될 수 없음

#TCL 명령 : rollback 등

 

단순 DML Trigger

1. 유형

- Before Trigger : 테이블에서 DML 이벤트를 Trigger 하기 전에 본문 실행

- After Trigger : 테이블에서 DML 이벤트를 Trigger 한 후에 본문 실행

- Instead of Trigger : Trigger문 대신 Trigger본문 실행

                            다른 방법으로 수정 불가능한 뷰에 사용

 

2. 구조

- 문장 Trigger : 영향을 받는 행이 없더라도 Trigger가 한번은 실행

- 행 Trigger : 테이블이 Trigger 이벤터의 영향을 받을 때 마다 실행

  -> for each row

  -> old : Trigger가 처리한 레코드의 원래 값 저장

  -> new : 새로운 값 포함

 

 

기본 형태

CREATE [OR REPLACE] TRIGGER 트리거명
TIMING [BEFORE | AFTER]
EVENT [INSERT | UPDATE | DELETE]
ON 테이블명
BEGIN
실행명령;
END;

 

 

트리거 생성

 

 


 

 

예시

 

재고 테이블과 창고 테이블 생성

재고 테이블에 값 추가

 

 

 

cnt에 자동으로 추가되게끔 설정해놓음

#NEW나 OLD를 사용할 때에는 앞에 : 를 무조건 입력해야함

 

 

 

 

 

warehouse

 

item

in_cnt가 증가된것을 볼 수 있다

 

 

 

 

 

'DATABASE > SQL' 카테고리의 다른 글

[SQL] ROLE  (0) 2018.04.24
[SQL] 보안  (0) 2018.04.23
[SQL] SUBPROGRAM PACKAGE  (0) 2018.04.23
[SQL] PROCEDURE  (0) 2018.04.23
[SQL] PL/SQL  (0) 2018.04.20
댓글