트리거 이벤트 타입
설명
-
인스턴스 이벤트(instance event) : 인스턴스 이벤트는 이벤트 연산의 단위가 인스턴스인 이벤트 타입을 말한다. 인스턴스
이벤트의 종류는 다음과 같다.
-
문장 이벤트(statement
event) : 이벤트
타입을 문장 이벤트로 정의하면 주어진 문장(이벤트)에 의해 영향을 받는 객체(인스턴스)가 많더라도, 트리거는 문장이 시작할 때
한 번만 불려지게 된다. 문장 이벤트의 종류는 다음과 같다.
- STATEMENT INSERT
- STATEMENT UPDATE
- STATEMENT
DELET
-
기타 이벤트 : COMMIT과
ROLLBACK은 개별적인 인스턴스에는 적용할 수 없다.
예제
- 예제 1
- 다음은 인스턴스 이벤트를 사용하는
예제이다. example 트리거는 데이터베이스 갱신에 의해 영향을 받는 각각의 인스턴스에 대해서 한번씩 불려진다. 예를 들어, history
테이블의 다섯 개 인스턴스의 score를 변경했다면, 이 트리거는 다섯 번 불려진다. 만약 score 컬럼의 첫 번째
인스턴스가 갱신되기 전에 트리거가 한 번만 불려지게 하려면, 예제 2와 같이 STATEMENT UPDATE
형식을 사용한다.
CREATE TRIGGER example
...
BEFORE UPDATE ON history(score)
...
- 예제 2
- 다음은
문장 이벤트를 사용하는 예제이다. 문장 이벤트를 지정하면 갱신의 영향을 받는 인스턴스가 많더라도, 첫 번째 인스턴스가
갱신되기 전에 트리거가 한 번만 불려지게 된다.
CREATE TRIGGER example
...
BEFORE STATEMENT UPDATE ON history(score)
...
주의 사항
- 이벤트 타입으로
인스턴스 이벤트와 문장 이벤트를 지정할 경우에는 반드시 이벤트 대상을 명시해야
한다.
- COMMIT과 ROLLBACK은 이벤트 대상을 가질 수 없다.