一.創建有一條執行語句的觸發器:
create trigger trigger_name
before|after trigger_event
on 表名 for each row trigger_STMT;
before 或者after 指定了觸發器執行的時間,其中前者表示在觸發器事件之前執行觸發器語句。
trigger_event表示觸發事件,即觸發器執行條件,(包含delete update insert三個語句)。
table_name 表示觸發事件操作表的名字,即在哪個表中執行trigger_event。
for each row表示任何一條記錄上的操作滿足觸發事件都會觸發該觸發器;
trigger_STMT表示激活觸發器後被執行的語句。
例如:
有兩張表,t_dept部門表
create table t_dept(
deptno int,
dname varchar(20),
loc varchar(20)
);
t_diary日記表:
create table t_diary(
diaryno int,
tablename varchar(20),
diarytime datetime
);
create trigger tri_diarytim
before insert on t_dept for each row
insert into t_diary values (NULL,'dept',now());
二.創建包含多條執行語句的觸發器:
create trigger trigger_name
before|after trigger_evevnt
on table_name for each row
begin
trigger_STMT
end
在mysql中由於一般用;來來作爲語句的結束符號,但是在創建觸發器時,需要用到;符號作爲執行語句的結束符號。
爲了解決該問題,可以用關鍵字delimiter 語句,例如delimiter $$來將結束符號設置爲$$.
例如:
delimiter $$
create trigger tri_diarytime2
after insert
on t_dept for each row
begin
insert into t_diary values (null,'t_dept',now());
insert into t_diary values (null,'t_deot',now());
end
$$
在最後記得 delimiter ;
三:查看觸發器:
show triggers;
四:刪除觸發器:
drop trigger trigger_name;