一、创建
1、创建有一条执行语句的触发器
CREATE TRIGGER TRIGGERNAME
BEFORE|AFTER TRIGGER_EVENT
ON TABLE_NAME FOR EACH ROW TRIGGER_STMT
BEFORE和AFTER
参数指定了触发器执行的时间
trigger_EVENT
参数表示了触发事件,即触发器执行条件,包含delete,insert,update;
for each row
参数表示任何一条记录上的操作满足触发事件都会触发触发器;
trigger_stmt
参数表示激活触发器后被执行的语句
例:
创建两个表t_dept和t_diary
create table t_dept(
detpno int,
dname varchar(20),
loc varchar(20)
);
create table t_diary(
diaryno int primary key,
tablename varchar(20),
diarytime datetime
);
desc t_dept;
desc t_diary;
create trigger tri_diarytime
before insert
on t_dept for each row
insert into t_diaty values(null,‘t_dept‘,now());
insert into t_dept values(1,‘cjgongdept‘,‘shanxi‘);
验证:
select * from t_diary;
2、创建包含多条执行语句的触发器
create trigger triggername
before|after trigger_event
on tablename 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_dept‘,now());
on
$$
delimiter ;
insert into t_dept values(2,‘cjgongdept‘,‘shanxi‘);
验证:
select * from t_diary;
二、查看
show triggers\G
三、删除
drop trigger triggername
show triggers\G