트리거 정의 구문

설명

CREATE TRIGGER 문을 사용하여 새로운 트리거를 생성하고, 트리거 대상, 실행 조건과 수행할 내용을 정의할 수 있다. 트리거는 데이터베이스 객체로서, 특정 이벤트가 대상 테이블에 대해 발생하면 정의된 동작을 수행한다.

구문

CREATE TRIGGER trigger_name

[ STATUS { ACTIVE | INACTIVE } ]

[ PRIORITYkey ]

event_time event_type[ event_target ]

[ IFcondition ]

EXECUTE [ AFTER | DEFERRED ] action [ ; ]

 

event_time:

   • BEFORE

   • AFTER

   • DEFERRED

 

event_type

   • INSERT

   • STATEMENT INSERT 

   • UPDATE

   • STATEMENT UPDATE 

   • DELETE

   • STATEMENT DELETE

   • ROLLBACK

   • COMMIT

 

event_target

   • ONtable_name

   • ONtable_name [ (column_name) ]

 

condition

   • expression

 

action

 • REJECT    

 • INVALIDATE TRANSACTION 

  •  PRINT message_string

  •  INSERT statement

  •  UPDATE statement

  •  DELETE statement  

예제

다음은 participant 테이블의 레코드를 갱신할 때 획득 메달의 개수가 0보다 작을 경우 갱신을 거절하는 트리거를 생성하는 예제이다.

예로 2004년도 올림픽에 한국이 획득한 금메달의 개수를 음수로 갱신할 경우 갱신이 거절되는 것을 알 수 있다.

CREATE TRIGGER medal_trigger

BEFORE UPDATE ON participant

IF new.gold < 0 OR new.silver < 0 OR new.bronze < 0

EXECUTE REJECT;

 

UPDATE participant SET gold = -5 WHERE nation_code = 'KOR'

AND host_year = 2004;

 

ERROR: The operation has been rejected by trigger "medal_trigger".