Mysql数据库【触发器】
文章目录
- 触发器
- 语法
- ①.插入数据触发器:
- ②.修改数据触发器
- ③. 删除数据触发器
触发器
触发器是与表有关的数据库对象,指在insert/update/delete之前(BEFORE)或之后(AFTER),触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性, 日志记录 , 数据校验等操作。使用别名OLD和NEW来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。现在触发器还只支持行级触发,不支持语句级触发。
语法
1)创建
CREATE TRIGGER trigger_name
BEFORE/AFTER INSERT/UPDATE/DELETE
ON tbl_name FOR EACH ROW -- 行级触发器
BEGIN
trigger_stmt ;
END;
2)查看
SHOW TRIGGERS ;
3)删除
DROP TRIGGER [schema_name.]trigger_name ; -- 如果没有指定 schema_name,默认为当前数据库 。
案例1:通过触发器记录 tb_user 表的数据变更日志,将变更日志插入到日志表user_logs中, 包含增加,修改 , 删除 。
这里tb_user表已有的数据如下:
①.插入数据触发器:
create trigger tb_user_insert_trigger
after insert on tb_user for each row
begin
insert into user_logs(id, operation, operate_time, operate_id, operate_params)
VALUES
(null, 'insert', now(), new.id, concat('插入的数据内容为:id=',new.id,',name=',new.name, ', phone=', NEW.phone, ', email=', NEW.email, ',profession=', NEW.profession));
end;
在触发器定义成功后,在Datagrip左侧导航栏中是没有任何变化的
测试:
-- 查看
show triggers ;
-- 插入数据到tb_user
insert into tb_user(id, name, phone, email, profession, age, gender, status,
createtime) VALUES (26,'三皇子','18809091212','erhuangzi@163.com','软件工程',23,'1','1',now());
执行结果:
1)查看触发器:
2)插入数据到tb_user表之后,日志表中多了一条记录:
②.修改数据触发器
create trigger tb_user_update_trigger
after update on tb_user for each row
begin
insert into user_logs(id, operation, operate_time, operate_id, operate_params)
VALUES
(null, 'update', now(), new.id,concat('更新之前的数据: id=',old.id,',name=',old.name, ', phone=',old.phone, ', email=', old.email, ', profession=', old.profession,' | 更新之后的数据: id=',new.id,',name=',new.name, ', phone=',NEW.phone, ', email=', NEW.email, ', profession=', NEW.profession));
end;
测试:
-- 查看
show triggers ;-- 更新
update tb_user set profession = '会计' where id = 23;
update tb_user set profession = '会计' where id <= 5;
更新后user_logs表中的结果:
③. 删除数据触发器
create trigger tb_user_delete_trigger after delete on tb_user for each row
begin
insert into user_logs(id, operation, operate_time, operate_id, operate_params)
VALUES
(null, 'delete', now(), old.id,concat('删除之前的数据: id=',old.id,',name=',old.name, ', phone=',old.phone, ', email=', old.email, ', profession=', old.profession));
end;
测试:
-- 查看
show triggers ;-- 删除数据
delete from tb_user where id = 26;
删除后user_logs表中的结果:
Mysql数据库【触发器】相关推荐
- MySQL数据库触发器
MySQL 数据库中触发器是一个特殊的存储过程,不同的是执行存储过程要使用 CALL 语句来调用,而触发器的 执行不需要使用 CALL 语句来调用,也不需要手工启动,只要一个预定义的事件发生就会被 M ...
- mysql数据库触发器失效,mysql 的数据库触发器解决方法
mysql 的数据库触发器 我要做一个数据库触发器,当删除数据库中的某一张表的时候触发这个一个事件,删除其他表中的某一些数据. 大家给个例子 ------解决方案------------------- ...
- MySQL数据库触发器讲解与案例
一.触发器语法了解 二.结合学生选课表进行实操 一.触发器语法了解: MySQL 5.1开始包含对触发器的支持.触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表 ...
- MySQL数据库触发器(trigger)
MySQL触发器(trigger):监视某种情况并触发某种操作 一:四要素 触发时间:before/after 地点:table 监视操作:insert/update/delete 触发操作:inse ...
- MySQL数据库----触发器
触发器-trigger 触发器:监视某种情况,并触发某种操作. 使用触发器可以定制用户对表进行[增.删.改]操作时前后的行为,注意:没有查询 -- 触发器:某种程序触发了工具的运行 -- 触发器不能主 ...
- MySQL数据库提升篇-----触发器
day06 MySQL数据库提升篇-----触发器 一.触发器概述: 触发器是什么?能有什么作用?能给我们带来什么样的操作数据库的方法这都在这里学一一的告诉大家.触发器原理类似于扳机的原理,当你一点击 ...
- mysql触发器执行失败_mysql-Mysql数据库触发器执行不成功
Mysql数据库中有order.orderitem和goods三张表,其中order与orderitem通过order的ID字段与orderitem的orderid字段关联:其中goods与order ...
- mysql数据库的触发器_Mysql数据库触发器
我还是msyql数据库触发器的新手.我想问一下我的台词: CREATE TRIGGER secure_dml3 BEFORE DELETE ON t_pembelian BEGIN IF (SELEC ...
- mysql 数据库学习(触发器)
引用:http://bbs.mysql.cn/thread-9135-1-2.html 引用:21. 触发程序 create table a (sa int); create table b (sb ...
- MySQL数据库:触发器Trigger
一.什么是触发器: 触发器是与表有关的数据库对象,当触发器所在表上出现指定事件并满足定义条件的时候,将执行触发器中定义的语句集合.触发器的这种特性可以协助应用在数据库端确保数据的完整性.触发器是一个特 ...
最新文章
- 5.数据绑定和表单标签库
- python编程入门指南上下百度云-Python编程入门指南(上下册)
- c语言程序设计第3周编程作业(数字特征)
- MyEclipse之安装SVN1.10.7
- 任意组合指令达到免杀
- 条码生成代码(Code39码)
- Titanic(泰坦尼克号生存预测)---(1)
- 使用Aptana搭建Python开发环境
- Excel的html转换成unicode,EXCEL表格中把汉字转换成unicode编码
- JDE 权限,分环境设置权限,PY,PD设置不同权限
- 回调函数—Java实现
- Lyapunov稳定性分析3(离散时间系统)
- Windows11 WSL Ubuntu1804 配置指南
- CF1060F Shrinking Tree(期望、树形dp)
- Windows基础 主机加固
- python爬虫爬取图片代码_Python爬虫爬取煎蛋网图片代码实例
- window10虚拟机下载地址
- java对称加密与非对称加密
- 嵌入式程序员的几年的小心得
- 视频剪辑工具:剪映专业版 for Mac
热门文章
- 身体指标的测试软件,Runtastic Libra体重秤(身体指标测量)
- 杰理-手表-AC701-watch-添加表盘
- Kotlin/DSL(Anko),原汁原味Kotlin开发Android---Activity Fragment与AnkoUI分离,强大的复用,更加便捷的开发
- SSD1963芯片引脚分布及其功能
- 尚硅谷大数据Hadoop教程(Hadoop 3.x)P46遇到的问题
- app 服务器维护通知,启用 App Store 服务器通知
- Python学习日记1
- 宾得rtk手簿说明书_那曲宾得RTK操作说明
- JAVA常见的命名规则:见名知意
- php asp.net html,Web 建站技术中,HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、ASP.NET、Web Services 是什么?...