mysql触发器(trigger)
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,触发器的作用监听数据的变化,以实现当数据变化时的关联操作,不过感觉没有实际作用,触发器的功能如果用代码逻辑来控制感觉会更正规些,毕竟团队中的其它人不一定会看到你定义的触发器,但一定能看到你的代码。那为
千家信息网最后更新 2026年10月31日mysql触发器(trigger)
触发器的作用
监听数据的变化,以实现当数据变化时的关联操作,不过感觉没有实际作用,触发器的功能如果用代码逻辑来控制感觉会更正规些,毕竟团队中的其它人不一定会看到你定义的触发器,但一定能看到你的代码。那为何还要学习触发器,有些知识不是为自己学的,你不用,你不敢保证别人不用。如果别人用了,我们对此一无所知,那么会给程序的维护带来很大的困难。
触发器的定义
格式:create trigger 触发器名称 事件 on 表名 执行代码
事件:
- 插入 insert
- 删除 delete
- 修改 update
时机:
- 前 before
- 后 after
事件与时机组合共有六种情况
- before insert
- after insert
- before delete
- after delete
- before update
- after update
创建语法
delimeter $ // 修改语句结束符,避免和定义trigger中的语句冲突
create trigger triggerName
after/before insert/update/delete on 表名
for each row // 这一行是固定的
begin
sql语句 // 一条或多条sql语句,一条sql语句也可省略begin 和 end
end;
delimeter ; // 改回正常的结束符
new / old
如果在trigger内部需要使用触发trigger那行记录中的值,那么new代表新行,old代表旧行。也就是说 old / new 分别代表事件发生 前 / 后该行记录。是一整行,而不是某个字段。
*注意: insert 操作没有old,delete 操作没有new
触发器的管理
删除
drop trigger trigger_name
查看所有触发器
show triggers;
示例
假设我们有一张班级表
| id | class_name | num |
|---|---|---|
| 1 | 001 | 1 |
| 2 | 002 | 1 |
| 3 | 003 | 0 |
还有一张学生表
| id | name | class_id |
|---|---|---|
| 1 | xiaohong | 1 |
| 2 | xiaogang | 2 |
我们定义一个触发器,每当增加一名学生,对应班级表中的学生数量num就加一。
delimiter $$create trigger zhaosheng after insert on student for each rowbeginupdate class set num=num+1 where id=new.class_id;end;$$delimiter ;看效果:
当增加一个学生zhangsan后,calss表中对应的id为3的num自动增加1。
触发器
语句
事件
学生
代码
代表
不用
作用
感觉
数据
时机
班级
结束符
变化
很大
困难
一无所知
一无
一行
也就是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
瑰夏咖啡
花魁咖啡
新华互联网科技
科技信息互联网
科技服务与互联网
百单互联网科技有限公司
互联网科技公司介绍
四川狮子座互联网科技
成都仁贤领冠互联网科技有限公司
互联网科技创新企业排名
济南和联互联网科技有限公司
中国的互联网科技企业的崛起
中国互联网有什么科技含量
广州恒生互联网科技有限
本届互联网博览会上的黑科技
晋城互联网科技
电子商务与互联网科技的关系
互联网营销推广黑科技
绵阳真晨互联网科技有限公司
伍佰万互联网科技是干嘛的
深圳市人人互联网科技有限公司
苏州找大状互联网科技有限公司
金诺互联网科技
与互联网科技公司
广州善班互联网科技
深圳市优智互联网科技有限公司
中国科技创新与世界互联网大会
华夏恒生科技与互联网科技
用友工业互联网科技发展
锡山区互联网智能科技产品供应