CREATE TRIGGER
Syntax
CREATE [DEFINER = { user | CURRENT_USER }] TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt
Description
This statement creates a new trigger. A trigger is a named database
object that is associated with a table, and that activates when a
particular event occurs for the table. The trigger becomes associated
with the table named tbl_name
, which must refer to a permanent table.
You cannot associate a trigger with a TEMPORARY
table or a view.
CREATE TRIGGER
requires the TRIGGER
privilege for the table associated
with the trigger. (Before MySQL 5.1.6, this statement requires the
SUPER
privilege.)
The DEFINER
clause determines the security context to be used when
checking access privileges at trigger activation time.
trigger_time
is the trigger action time. It can be BEFORE
or AFTER
to
indicate that the trigger activates before or after each row to be
modified.
trigger_event
indicates the kind of statement that activates the
trigger. The trigger_event
can be one of the following:
INSERT
: The trigger is activated whenever a new row is inserted into the table; for example, throughINSERT
,LOAD DATA
, andREPLACE
statements.UPDATE
: The trigger is activated whenever a row is modified; for example, throughUPDATE
statements.DELETE
: The trigger is activated whenever a row is deleted from the table; for example, throughDELETE
andREPLACE
statements. However,DROP TABLE
andTRUNCATE
statements on the table do not activate this trigger, because they do not useDELETE
. Dropping a partition does not activateDELETE
triggers, either.