트리거는 CREATE TRIGGER 구문에 트리거 대상, 실행 조건과 수행할 내용을 정의하여 생성한다.
CREATE TRIGGER trigger_name
[ STATUS { ACTIVE
| INACTIVE
} ]
[ PRIORITY
key
]
event_time event_type
[ event_target
]
[ IF
condition
]
EXECUTE [
AFTER
| DEFERRED
] action
[ ;
]
event_time:
• BEFORE
• AFTER
• DEFERRED
event_type:
• INSERT
• STATEMENT
INSERT
• UPDATE
• STATEMENT
UPDATE
•
DELETE
• STATEMENT DELETE
• ROLLBACK
• COMMIT
event_target:
• ON
table_name
• ON
table_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".