在mysql中,触发器是存储在数据库目录中的一组SQL语句,每当与表相关联的事件发生时,即会执行或触发触发器,例如插入、更新或删除。触发器与数据表关系密切,主要用于保护表中的数据;特别是当有多个表具有一定的相互联系的时候,触发器能够让不同的表保持数据的一致性。在MySQL中,只有执行INSERT、UPDATE和DELETE操作时才能激活触发器,其它SQL语句则不会激活触发器。

本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。
mysql中的触发器
在mysql中,触发器是存储在数据库目录中的一组SQL语句,每当与表相关联的事件发生时,即会执行或触发触发器,例如插入、更新或删除。
MySQL 的触发器和存储过程一样,都是嵌入到 MySQL 中的一段程序,是 MySQL 中管理数据的有力工具。不同的是执行存储过程要使用 CALL 语句来调用,而触发器的执行不需要使用 CALL 语句来调用,也不需要手工启动,而是通过对数据表的相关操作来触发、激活从而实现执行。比如当对 student 表进行操作(INSERT,DELETE 或 UPDATE)时就会激活它执行。
触发器与数据表关系密切,主要用于保护表中的数据。特别是当有多个表具有一定的相互联系的时候,触发器能够让不同的表保持数据的一致性。
在 MySQL 中,只有执行 INSERT、UPDATE 和 DELETE 操作时才能激活触发器,其它 SQL 语句则不会激活触发器。
那么为什么要使用触发器呢?比如,在实际开发项目时,我们经常会遇到以下情况:
在学生表中添加一条关于学生的记录时,学生的总数就必须同时改变。
增加一条学生记录时,需要检查年龄是否符合范围要求。
删除一条学生信息时,需要删除其成绩表上的对应记录。
删除一条数据时,需要在数据库存档表中保留一个备份副本。
虽然上述情况实现的业务逻辑不同,但是它们都需要在数据表发生更改时,自动进行一些处理。这时就可以使用触发器处理。例如,对于第一种情况,可以创建一个触发器对象,每当添加一条学生记录时,就执行一次计算学生总数的操作,这样就可以保证每次添加一条学生记录后,学生总数和学生记录数是一致的。
MySQL 支持的触发器
在实际使用中,MySQL 所支持的触发器有三种:INSERT 触发器、UPDATE 触发器和 DELETE 触发器。
1) INSERT 触发器
在 INSERT 语句执行之前或之后响应的触发器。
使用 INSERT 触发器需要注意以下几点:
在 INSERT 触发器代码内,可引用一个名为 NEW(不区分大小写)的虚拟表来访问被插入的行。
在 BEFORE INSERT 触发器中,NEW 中的值也可以被更新,即允许更改被插入的值(只要具有对应的操作权限)。
对于 AUTO_INCREMENT 列,NEW 在 INSERT 执行之前包含的值是 0,在 INSERT 执行之后将包含新的自动生成值。
DM建站系统律师事务所HTML5网站模板1.7
DM建站系统律师事务所HTML5网站模板, DM企业建站系统。是由php+mysql开发的一套专门用于中小企业网站建设的开源cms。DM系统的理念就是组装,把模板和区块组装起来,产生不同的网站效果。可以用来快速建设一个响应式的企业网站( PC,手机,微信都可以访问)。后台操作简单,维护方便。DM企业建站系统安装步骤:第一步,先用phpmyadmin导入sql文件。 第二步:把文件放到你的本地服务器
0
查看详情
2) UPDATE 触发器
在 UPDATE 语句执行之前或之后响应的触发器。
使用 UPDATE 触发器需要注意以下几点:
在 UPDATE 触发器代码内,可引用一个名为 NEW(不区分大小写)的虚拟表来访问更新的值。
在 UPDATE 触发器代码内,可引用一个名为 OLD(不区分大小写)的虚拟表来访问 UPDATE 语句执行前的值。
在 BEFORE UPDATE 触发器中,NEW 中的值可能也被更新,即允许更改将要用于 UPDATE 语句中的值(只要具有对应的操作权限)。
OLD 中的值全部是只读的,不能被更新。
注意:当触发器设计对触发表自身的更新操作时,只能使用 BEFORE 类型的触发器,AFTER 类型的触发器将不被允许。
3) DELETE 触发器
在 DELETE 语句执行之前或之后响应的触发器。
使用 DELETE 触发器需要注意以下几点:
在 DELETE 触发器代码内,可以引用一个名为 OLD(不区分大小写)的虚拟表来访问被删除的行。
OLD 中的值全部是只读的,不能被更新。
总体来说,触发器使用的过程中,MySQL 会按照以下方式来处理错误。
对于事务性表,如果触发程序失败,以及由此导致的整个语句失败,那么该语句所执行的所有更改将回滚;对于非事务性表,则不能执行此类回滚,即使语句失败,失败之前所做的任何更改依然有效。
若 BEFORE 触发程序失败,则 MySQL 将不执行相应行上的操作。
若在 BEFORE 或 AFTER 触发程序的执行过程中出现错误,则将导致调用触发程序的整个语句失败。
仅当 BEFORE 触发程序和行操作均已被成功执行,MySQL 才会执行 AFTER 触发程序。
【相关推荐:mysql视频教程】
以上就是mysql中触发器是什么的详细内容,更多请关注其它相关文章!
# 网站建设的
# 相关联
# 有一定
# 来访问
# 多个
# 需要注意
# 几点
# 建站系统
# 律师事务所
# 镜像
# mysql
# 蕲春网站优化公司有哪些
# 凤城手机关键词排名查询
# 面试seo的关键问题
# 肇庆端州全媒体营销推广
# 宁波余姚全网营销推广
# 泉州簪花的营销推广方式
# 汕尾seo 优帮云
# 本地网站建设服务价格
# seo优化网站排名优化全网推广
# 南开区怎么做网站推广
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
以下哪一项是古代兵书三十六计中的计谋
京东快递包裹信息查询入口 京东快递官方查询平台入口
PointNet++语义分割模型中类别变更引发的断言错误及标签处理策略
《三国:谋定天下》平民全阶段通用阵容
铁拳8在线玩 铁拳8在线秒玩入口
《金山词霸》语音翻译方法
小米倒班助手添加日历提醒
MySQL多重JOIN技巧:高效关联同一表获取多角色信息
六级准考证号怎么查_四六级准考证查询入口官网
mysql归档数据怎么导出为csv_mysql归档数据导出为csv文件的方法
《tt语音》超级玩家开通方法
如何配置VS Code作为您Git操作的默认编辑器
店铺如何做视频号推广?做视频号推广有用吗?
WooCommerce购物车:强制显示所有交叉销售商品教程
Sublime怎么配置YAML文件格式化_Sublime YAML Formatter插件教程
德邦快递会员怎么开通
CSS如何在页面中引入重置样式_使用Normalize.css或Reset.css统一浏览器默认样式
Highcharts雷达图径向轴数值标签实现教程
申通快递物流信息查询 申通快递包裹状态追踪
Excel如何设置动态下拉菜单_Excel表格下拉选项快速方法
J*aScript类型数组_TypedArray使用
小米手机屏幕失灵乱跳怎么办 屏幕触控问题自检与临时解决方法【应急】
b站怎么设置动态仅粉丝可见_b站动态粉丝可见设置方法
邮编号码查询app有哪些_邮编号码查询推荐app及使用体验
重返未来:1999卡戎全方位攻略
抖音手机分身两个账号怎么切换?分身两个系统是一样的吗?
Win10运行窗口在哪里打开 Win10调出运行命令框快捷键【技巧】
基于 Flink 和 Kafka 实现高效流处理:连续查询与时间窗口
如何在CSS中使用absolute实现登录弹窗居中_transform translate结合
Safari浏览器自动填表功能失效怎么办 Safari表单管理修复
《i莞家》修改昵称方法
Yandex俄罗斯搜索引擎官网入口 Yandex网页端直接访问
CSS绝对定位与溢出控制:实现背景元素局部显示不触发滚动条
荣耀Magic7拍照夜景噪点处理_荣耀Magic7相机优化
《edge浏览器》关闭翻译功能方法
学习通网页版课程打不开_课程无法访问时的解决方法
iPhone12是否要更新ios16
手机耗电快是什么原因 延长手机电池续航时间的设置方法【详解】
管理打开的编辑器:固定、分组和关闭技巧
手机坏了微信聊天记录怎么导出来 新手机恢复聊天记录技巧
Win10如何关闭操作中心通知 Win10免打扰设置全攻略【清爽】
iPhone16Plus参数配置如何调整声音_iPhone16Plus参数配置声音调整详细方法
响应式设计中动态背景颜色条的实现指南
优酷官网登录入口电脑版 优酷官网网址入口
鸣潮历史学家灯塔位置一览
菜鸟驿站的取件码忘了怎么办 手机快速查询指南
Word如何将文字快速转成表格 Word文本转换成表格功能使用技巧【效率】
使用Selenium在无头Chrome中交互动态菜单和复选框的策略
《土豆雅思》修改密码方法
快手缓存清理方法
2022-06-14
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。