CREATE TRIGGER (구문)

설명

트리거는 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 CLASS attribute_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;


csql> UPDATE participant SET gold = -5 WHERE nation_code = 'KOR' AND host_year = 2004;
csql> ;x
In line 1, column 1,
ERROR: The operation has been rejected by trigger "medal_trigger".