《MySQL高级查询与编程》-T5(常见数据库对象)
一、触发器
1、概念
触发器就是一种特殊的存储过程。触发器和存储过程一样,是一个能够完成特定功能、存储在数据库服务器上的SQL片段,
触发器无需调用
【当数据表中的数据执行DML操作时字段触发SQL片段执行,无需手动调用】。在MySQL中,只有执行insert、update、delete操作时才能触发触发器的执行。
2、触发器的使用
【数据表准备】
2.1 创建触发器
【语法】
create trigger 触发器名 触发时机 DML类型 on 表名 for each row 执行的sql语句;
【解释说明】
(1)触发时机:before、after
(2)DML类型:insert、update、delete
(3)NEW :在触发器中⽤于获取insert操作添加的数据、update操作修改后的记录
OLD :在触发器中⽤于获取delete操作删除前的数据、update操作修改前的数据
【实例】
创建触发器:当学⽣信息表发⽣添加操作后,则向⽇志信息表中记录一条日志
create trigger tri_test
after insert on student -- 在执行新增操作后操作student表的数据
for each row -- 声明⾏级触发器(只要操作⼀条记录就触发触发器执⾏⼀次)
insert into stulog
values(null,now(),concat('添加学号为:',NEW.id,'的学生信息'));
2.2 查看触发器
【命令】
show triggers;
2.3 测试触发器
-- 1个sql语句新增一条数据,日志增加1条
insert into student values('1005','lisi',36);
-- 1个sql语句新增两条数据,日志增加2条
insert into student values('1003','lisa',