MySQL进阶08_触发器

触发器是数据库中的一个重要机制,用于在特定的insert、update或delete操作前后执行预定义的SQL语句,以确保数据完整性、记录日志或进行数据验证。本文介绍了MySQL中的行级触发器创建、查看和删除的语法,并通过实例展示了如何创建insert、update和delete触发器,以及这些触发器在数据操作时的行为。

4.触发器

概述

触发器是与表有关的数据库对象,指在insert/update/delete之前或之后,触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性,日志记录,数据校验等操作。
使用别名OLD和NEW来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。(对于MySQL)现在触发器还只支持行级触发,不支持语句级触发。

在这里插入图片描述

语法
--创建
create trigger 触发器名称
before/after  insert/update/delete
on table_name for each row --行级触发器
begin
	trigger_stmt;
end;
--查看
show triggers;
--删除
drop triggers [schema_name]触发器名;--如果没有指定schema_name,默认为当前数据库。

在这里插入图片描述

--先创建好上述user_logs表
create trigger tb_user_insert_trigger
after  insert on tb_user for each row
begin
	insert into user_logs(...)	values
	(null,'insert',now(),new.id,concat('插入的内容为id=',new.id,',name=',new.name));
end;

--查看
show triggers;

--删除
drop triggers tb_user_insert_trigger;

--插入数据到tb_user表;
--查看user_logs表

--修改数据触发器
create trigger tb_user_update_trigger
after  update on tb_user for each row
begin
	insert into user_logs(...)	values
	(null,'update',now(),new.id,concat('更新之前的数据id=',old.id,',name=',old.name,
                              ' | 更新之后的数据id=',new.id,',name=',new.name));
end;
--更新数据后查看user_logs表
update tb_user set name='张三' where age <= 5;
--问 触发器执行几次  5次,因为是行级触发器 

                                       
--删除数据触发器
create trigger tb_user_delete_trigger
after  delete on tb_user for each row
begin
	insert into user_logs(...)	values
	(null,'delete',now(),old.id,concat('删除之前的内容为id=',new.id,',name=',new.name));
end;

5.总结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值