触发器(trigger)是MySQL提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作(insert,delete, update)时就会激活它执行
- 可在写入数据表前,强制检验或转换数据。
- 触发器发生错误时,异动的结果会被撤销。
- 部分数据库管理系统可以针对数据定义语言(DDL)使用触发器,称为DDL触发器。
- 可依照特定的情况,替换异动的指令 (INSTEAD OF)。
DELIMITER |
CREATE TRIGGER .
< [ BEFORE | AFTER ] > < [ INSERT | UPDATE | DELETE ] >
ON [dbo] //dbo代表该表的所有者
FOR EACH ROW
BEGIN
–do something
END |
现在我用两个表 一个是 A表 一个是B表 我想在A表更新数据的时候 给B表添加一条 记录 (类似于日常使用的Log)应用场景如:记录用户的余额变动 记录登陆日志 等
B表结构
比如说 我在A表 修改的时候 在B中存储一条 记录修改 之前的数据
在A表中添加触发器

触发器部分 应该很好理解
名:就是定义个名字
触发:有两个参数 BEFORE就是在 之前操作执行 AFTER 就是在操作之后执行
插入:当A表 执行插入新数据的时候 执行
更新:当A表 执行更新数据的时候 执行
删除:当A表 执行删除数据的时候 执行
重要
定义:这里要写 你要执行的 SQL语句 语法参看一下 3、MySQL 语法

在Navicat中定义
要注意 代码中的 old 代表 修改之前的数据 如果想用处理之后的 数据 就用 new 就可以
这里就简单的写了一个 添加log的 小demo吧 如果想做其他的操作 就在这里处理就可以 自己写一下 SQL语句
A表数据

B表数据

当A表中一项发生修改时:
修改的id为3

B表会添加一条记录
记录A表id为3修改之前的数据

注意:我在使用时候初次添加保存的时候 mysql报错 权限不足 我给了最高权限就可以保存了
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/1791.html