一相关概念
1,触发器是数据库的对象,与函数类似,需要声明执行。触发器的执行不是程序调用,也不是手工启动,由事件来触发,激活从而实现执行。
2能够触发的语句:delete \ insert \ update
经常使用触发器数据对象,是由于该对象能够加强数据库表中数据的完整性约束和业务规则。
二创建触发器
1查询表
DESC t_dept;
DESC t_diary;
DESC t_dept;
field | type | null | key | default | extra |
deptno | int(11) | yes | null | ||
dname | varchar(20) | yes | null | ||
loc | varchar(40) | yes | null |
DESC t_diary;
field | type | null | key | default | extra |
diaryno | int(11) | no | pri | null | auto_increment |
tablename | varchar(20) | yes | null | ||
diarytime | datetime | yes | null |
2 向部门表中插入记录时,就会在插入之前向日记表中插入当前时间
create trigger tri_diarytime
before insert
on t_dept for each row
insert into t_diary values(null,'t_dept',now());
insert into t_dept values(1,'fghjk','shangxi');
select * from t_diary;
3创建包含多条执行语句的触发器
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());
end
$$
delimeter;
insert into t_dept values(1,'fghjk','shangxi');
select * from t_diary;
diaryno | tablename | diarytime |
1 | t_dept | 2019-06-23 15:25:09 |
2 | t_dept | 2019-06-23 15:30:07 |
3 | t_dept | 2019-06-23 15:30:07 |
三查看触发器
1 show triggers \G
2 select * from triggers \G
3 select * from triggers where triggers_name='tri_diarytime2' \G
四删除触发器
drop triggers tri_diarytime;