MySQL·的·触发器:
MySQL的触发器的内容有很多的应用场景,我们可以通过这篇博客来对MySQL的触发器进行一个简单的了解。
关于mysqld的触发器
我们需要了解MySQL本来是要用来干什么的!!!可以协助应用在数据库端确保数据的完整性,日志记录,数据校验。
1.数据准备:
-- 数据准备
create database if not exists mydb9_trigger;
use mydb9_trigger;
-- 用户表
create table user(
uid int primary key,
username varchar(50) not null,
password varchar(50) not null
);
-- 用户信息操作日志表
create table uesr_logs(
id int primary key auto_increment,
time timestamp,
log_test varchar(255)
);
2.关键字:
trigger是触发器的关键字。
3.样例:
需求一:当user表添加数据,uesr_logs自动添加日志记录
定义触发器
代码如下:
create trigger trigger_test1 after insert
on user for each row
insert into uesr_logs values(null,now(),'有新用户添加');
-- 在user表中添加数据
insert into user values(1,'张三','123456');
这个after代表了是在表格中提交数据之后,才会提交到日志中。
需求二:
当user表被修改,自动记录日志。
delimiter$$
create trigger trigger_test2 before update
on user for each row
begin
insert into uesr_logs values(null,now(),'有用户信息被修改');
end $$
delimiter ;
-- 修改数据
update user set password ='888888' where uid =1;
这个before的意思是在修改数据前就会将信息记录在日志中。
3.触发器的关键字:
insert类型的触发器:
create trigger trigger_test3 after insert
on user for each row
insert into uesr_logs values(null,now(),concat_ws('有新用户添加,信息为:',new.uid,new.username,new.password));
insert into user values(2,'轩轩','123456');
update类型的触发器
create trigger trigger_test4 after update
on user for each row
insert into uesr_logs values(null,now(),concat_ws('有用户信息修改,信息为:',old.uid,old.username,old.password));
update user set password='999999'where uid =2;
特别注意
Delect 类型的只有old类型 。