mysql手册06_触发器


触发器指在数据库 增删改前后 触发并执行的一段 SQL语句集合

触发器可以确保 数据完整性,进行 日志记录数据校验

触发器使用 NEWOLD 来引用触发器中发生变化的记录内容

MySQL 只支持 行级触发器 ,不支持语句级触发器

触发器类型 NEW和OLD的用法
insert型触发器 NEW表示将要或已经新增的数据
update型触发器 NEW表示将要或已经修改的数据,OLD表示修改之前的数据
delete型触发器 OLD表示将要或已经删除的数据

创建触发器:

通过触发器记录emp表的数据变更日志,包含增删改:首先创建日志表:
create table emp_logs(id int(11) not null auto_increment,operation varchar(20) not null comment '操作类型',operate_time datetime not null comment '操作时间',operate_id int(11) not null comment '操作表的ID',operate_params varchar(500) comment '操作参数',primary key(id)
)engine=innodb default charset=utf8;创建insert触发器:
create trigger emp_insert_trigger
after insert
on emp
for each row
begininsert into emp_logs values(null,'insert',now(),new.id,concat('插入数据(id:',new.id,', name:',new.name,', age:',new.age,', salary:',new.salary,')'));
end$测试insert:
insert into emp values(null,'光明左使',30,3500);select * from emp_logs;
+----+-----------+---------------------+------------+--------------------------------------------------------------+
| id | operation | operate_time        | operate_id | operate_params                                               |
+----+-----------+---------------------+------------+--------------------------------------------------------------+
|  1 | insert    | 2020-08-15 15:10:02 |          5 | 插入数据(id:5, name:光明左使, age:30, salary:3500)          |
+----+-----------+---------------------+------------+--------------------------------------------------------------+创建update触发器:
create trigger emp_update_trigger
after update
on emp
for each row
begininsert into emp_logs values(null,'update',now(),new.id,concat('修改前数据(id:',old.id,', name:',old.name,', age:',old.age,', salary:',old.salary,')','修改后数据(id:',new.id,', name:',new.name,', age:',new.age,', salary:',new.salary,')'));
end$测试update:
update emp set age=39 where id=3;select * from emp_logs;
+----+-----------+---------------------+------------+------------------------------------------------------------------------------------------------------------------------------+
| id | operation | operate_time        | operate_id | operate_params                                                                                                               |
+----+-----------+---------------------+------------+------------------------------------------------------------------------------------------------------------------------------+
|  1 | insert    | 2020-08-15 15:10:02 |          5 | 插入数据(id:5, name:光明左使, age:30, salary:3500)                                                                          |
|  2 | update    | 2020-08-15 15:19:34 |          3 | 修改前数据(id:3, name:青翼蝠王, age:38, salary:2800)修改后数据(id:3, name:青翼蝠王, age:39, salary:2800)                    |
+----+-----------+---------------------+------------+------------------------------------------------------------------------------------------------------------------------------+创建delete触发器:
create trigger emp_delete_trigger
after delete
on emp
for each row
begininsert into emp_logs values(null,'delete',now(),old.id,concat('删除数据(id:',old.id,', name:',old.name,', age:',old.age,', salary:',old.salary,')'));
end$测试delete:
delete from emp where id = 5;select * from emp_logs;
+----+-----------+---------------------+------------+------------------------------------------------------------------------------------------------------------------------------+
| id | operation | operate_time        | operate_id | operate_params                                                                                                               |
+----+-----------+---------------------+------------+------------------------------------------------------------------------------------------------------------------------------+
|  1 | insert    | 2020-08-15 15:10:02 |          5 | 插入数据(id:5, name:光明左使, age:30, salary:3500)                                                                          |
|  2 | update    | 2020-08-15 15:19:34 |          3 | 修改前数据(id:3, name:青翼蝠王, age:38, salary:2800)修改后数据(id:3, name:青翼蝠王, age:39, salary:2800)                    |
|  3 | delete    | 2020-08-15 15:24:46 |          5 | 删除数据(id:5, name:光明左使, age:30, salary:3500)                                                                          |
+----+-----------+---------------------+------------+------------------------------------------------------------------------------------------------------------------------------+

查看触发器:

show triggers\G;*************************** 1. row ***************************Trigger: emp_insert_triggerEvent: INSERTTable: empStatement: begin
insert into emp_logs values(null,'insert',now(),new.id,concat('插入数据(id:',new.id,', name:',new.name,', age:',new.age,', salary:',new.salary,')'));
endTiming: AFTERCreated: 2020-08-15 15:08:11.22sql_mode: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTIONDefiner: root@localhost
character_set_client: utf8
collation_connection: utf8_general_ciDatabase Collation: utf8mb4_0900_ai_ci
*************************** 2. row ***************************Trigger: emp_update_triggerEvent: UPDATETable: empStatement: begin
insert into emp_logs values(null,'update',now(),new.id,concat('修改前数据(id:',old.id,', name:',old.name,', age:',old.age,', salary:',old.salary,')','修改后数据(id:',new.id,', name:',new.name,', age:',new.age,', salary:',new.salary,')'));
endTiming: AFTERCreated: 2020-08-15 15:18:29.05sql_mode: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTIONDefiner: root@localhost
character_set_client: utf8
collation_connection: utf8_general_ciDatabase Collation: utf8mb4_0900_ai_ci
*************************** 3. row ***************************Trigger: emp_delete_triggerEvent: DELETETable: empStatement: begin
insert into emp_logs values(null,'delete',now(),old.id,concat('删除数据(id:',old.id,', name:',old.name,', age:',old.age,', salary:',old.salary,')'));
endTiming: AFTERCreated: 2020-08-15 15:23:47.56sql_mode: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTIONDefiner: root@localhost
character_set_client: utf8
collation_connection: utf8_general_ciDatabase Collation: utf8mb4_0900_ai_ci
3 rows in set (0.00 sec)

删除触发器:

drop trigger emp_delete_trigger;

mysql手册06_触发器相关推荐

  1. mysql latid1_mysql数据库触发器详解-阿里云开发者社区

    1. 引言 Mysql的触发器和存储过程一样,都是嵌入到mysql的一段程序.触发器是mysql5新增的功能,目前线上凤巢系统.北斗系统以及哥伦布系统使用的数据库均是mysql5.0.45版本,很多程 ...

  2. mysql数据库触发器失效,mysql 的数据库触发器解决方法

    mysql 的数据库触发器 我要做一个数据库触发器,当删除数据库中的某一张表的时候触发这个一个事件,删除其他表中的某一些数据. 大家给个例子 ------解决方案------------------- ...

  3. Mysql高级之触发器

    原文:Mysql高级之触发器 触发器是一类特殊的事务 ,可以监视某种数据操作(insert/update/delete),并触发相关操作(insert/update/delete). 看以下事件: 完 ...

  4. mysql创建删除触发器的时候_mysql触发器简介及如何创建和删除触发器

    什么是mysql触发器 需要MySQL 5 对触发器的支持是在MySQL 5中增加的.因此,本章内容适用于MySQL 5或之后的版本. MySQL语句在需要时被执行,存储过程也是如此.但是,如果你想要 ...

  5. mysql 动态传入表名 存储过程_面试再问MySQL存储过程和触发器就把这篇文章给他...

    Mysql存储过程及触发器trigger 存储过程 一.一个简单的存储过程 1,一个简单的存储过程 delimiter $$create procedure testa()begin Select * ...

  6. oracle触发器比较,Oracle使用触发器和mysql中使用触发器的比较

    一.触发器 1.触发器在数据库里以独立的对象存储, 2.触发器不需要调用,它由一个事件来触发运行 3.触发器不能接收参数 --触发器的应用 举个例子:校内网.开心网.facebook,当你发一个日志, ...

  7. MySQL的学习--触发器

    转载自https://www.cnblogs.com/CraryPrimitiveMan/p/4206942.html MySQL包含对触发器的支持.触发器是一种与表操作有关的数据库对象,当触发器所在 ...

  8. mysql查看所有触发器以及存储过程等操作集合

    1. mysql查询所有表: SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '数据库名' AND  TAB ...

  9. Mysql 脚本创建触发器报错 1064 42000

    关于:使用sql脚本在mysql中创建触发器时报错: 解决方法:加入定界符

  10. mysql schema 保存数据_在MySQL中,所有触发器的定义都保存在information_schema数据库下的()表中。_学小易找答案...

    [单选题]如何将英制 的零件转为公制的零件 ( ). [判断题]连续选择边线创建倒角时,不能单独修改某一边线的倒角大小 [判断题]创建筋特征时截面必须是闭和的 [填空题]Hibernate 的会话接口 ...

最新文章

  1. 多人开源博客系统再搜集
  2. shell 数组排序
  3. Mybatis分页插件更新
  4. 广东计算机好的2a学校,广东专插本2A院校排名情况
  5. 4 文件操作 支持图片 视频 mp3 文本等
  6. AI又被彩虹吹?!新浪财经:应届博士算法毕业,80万年薪被疯抢
  7. 《深入理解Java虚拟机》——垃圾收集器的具体实现
  8. 经典的 div + css 鼠标 hover 下拉菜单
  9. Redis 快速入门 -- Redis 命令(6)
  10. windows10安装AWVS
  11. ADMM算法(交替方向乘子法)
  12. 深度学习GPU最全对比,到底谁才是性价比之王?
  13. 美区苹果id绑定QQ邮箱教程
  14. 边沿触发是什么意思_epoll 水平触发 边沿触发
  15. 《国际名酒知识与品鉴》学习笔记
  16. 角色攻击、角色特殊动作
  17. Vue动态设置路由title
  18. 用c语言给8051编程,8051单片机的C语言编程
  19. 在Linux中压缩/解压缩文件
  20. linux运维拾忆2

热门文章

  1. 双击运行 jar 文件
  2. ClickHouse第四讲-表引擎
  3. win10(win8)上安装miniTool后出现请手动安装fastboot驱动问题
  4. 产品的思路——来自腾讯张小龙的分享(全版)
  5. ERP、CRM、SCM、电子商务、BI、ITSS
  6. 1252: [蓝桥杯2015初赛]奇妙的数字
  7. ExtJS之EditorGridPanel
  8. Rainmeter 雨滴桌面 主题分享
  9. 特洛伊木马与计算机病毒有什么区别,特洛伊木马Vs病毒Vs蠕虫, 有什么区别?...
  10. Java商城 架构演化