广告
返回顶部
首页 > 资讯 > 数据库 >MySQL(5)-mysql的事务与触发器功能
  • 552
分享到

MySQL(5)-mysql的事务与触发器功能

2024-04-02 19:04:59 552人浏览 泡泡鱼
摘要

         本篇博客介绍的是MySQL的事务功能和触发器功能 , 以及它们的用法 . 一 . Mysql事务         事务是一组原子性的SQL查询,或者说是一个独立的工作单元。事务中的所有操作

         本篇博客介绍的是MySQL的事务功能和触发器功能 , 以及它们的用法 .


 一 . Mysql事务

         

事务是一组原子性的SQL查询,或者说是一个独立的工作单元。事务中的所有操作要么全部执行成功,要么全部执行失败

mysql中 , 采用事务功能可以实现有选择性的对表中的数据操作做回滚 , 提交 , 类似于Word中的记忆功能 (做错了可以CTRL+Z撤销)

MySQL默认处理任务的原则 : 执行增 , 删 , 改操作会自动保存数据到库 , 表记录中

生活实例 : 好比玩游戏 , 当玩家在玩游戏充值时 , 假如钱扣了 , 道具却没有立即到手 , 这样显然会大大减低玩家对游戏的体验 , 最后导致的双方的不开心 ,出现这种情况说的就是数据的事务没有保障 ; 假如出现这种情况事务功能可以解决这种问题 , 也就是道具没有到账的情况 , 玩家账户的余额也是不会扣除的


Mysql的事务处理主要有两中方法:


1 . 用BEGIN , ROLLBACK , COMMIT 来实现

begin : 开始一个事务 , 然后执行create , update , insert等命令对数据做出操作 

rollback : 事务回滚 (相当于word中的ctrl+z撤销)

commit : 事务确认 (提交 , 相当于word中的ctrl+s保存)    


2 . 通过set来改变mysql的自动提交模式

注 : MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过
show   variables \G        查看MYSQL环境变量
show   variables  like  'autocom%';     查看autocommit环境变量的状态
set  autocommit=0   禁止自动提交(临时设置) ,即自动开启事务功能,并不需要用begin开始事务,但是必须用commit提交操作,或用rollback撤消操作 , 此时查看autocommit环境变量  , value为OFF:

MySQL(5)-mysql的事务与触发器功能

set autocommit=1   开启自动提交(必须用begin开始一个事务,用commit或rollback结束事务)来实现事务的处理 .查看auto commit值为状态ON .
                 

但注意当你用 set autocommit=0 的时候,你以后所有的SQL都将做为事务处理,直到你用commit确认或rollback结束,当你结束这个事务的同时也开启了个新的事务!按第一种方法只将当前的作为一个事务!个人推荐使用第一种方法!
MYSQL中只有INNODB和BDB类型的数据表才能支持事务处理!其他的类型是不支持的!
注意:事务功能只对表的insert、delete、update这些操作有效。


实例 : 进入数据库中 , 使用test数据库 , 创建一张testdb表 , 查看表中的数据 , 然后开启事务功能 , 插入2条数据 , 提交事务 , 查看表中的数据 ; 然后开启新事务 , 插入一条记录 , 做回滚操作(撤销) , 查看表中的数据

              

第一步 : 在test数据库中创建testdb表 , 查看表中数据

MySQL(5)-mysql的事务与触发器功能

第二步 : 开启事务功能 , 并插入数据 ,然后提交

MySQL(5)-mysql的事务与触发器功能

第三步 : 开启新事务 , 插入一条记录 , 做回滚操作(撤销) , 并查看表中的数据

MySQL(5)-mysql的事务与触发器功能




 二 . mysql触发器功能


触发器(trigger)是一个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件(event)来触发,
 比如当对A表进行操作事件( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。

用生活实例来说 : 在A处按电脑开机键,电脑就开机了。
                         在A处按灯的开关,B处天花板上的灯就亮了。

                         在A处打卡 , 通道门就开了


创建触发器(trigger)语法 :

CREATE  TRIGGER  触发器名称  BEFORE|AFTER  触发事件

ON  表名 FOR  EACH  ROW

BEIGN

         触发器程序体 ;

END  

        <触发器名称> 最多64个字符,它和MySQL中其他对象的命名方式一样
        { BEFORE | AFTER } 触发器时机
        { INSERT | UPDATE | DELETE }   触发的事件
        ON <表名称>   标识建立触发器的表名,即在哪张表上建立触发器
        FOR EACH ROW        触发器的执行间隔:FOR EACH ROW子句通知触发器 每隔一行 执行一次动作,而不是对整个表执行一次
       <触发器程序体> 要触发的SQL语句:可用顺序,判断,循环等语句实现一般程序需要的逻辑功能

        

实例 : 在test数据库中创建一张stu学生表和一张统计stu表的人数的stu_total表  , 然后创建student表发生改变 , stu_total表就发生改变的触发器 , 对stu表进行操作 , 然后查看stu_total因触发器会有什么变化

第一步 :创建这两张表 , 并查看表中的数据

MySQL(5)-mysql的事务与触发器功能

第二步 : 创建触发器stu_insert_trigger 和触发器stu_delete_trigger

MySQL(5)-mysql的事务与触发器功能

第三步 : 再次定义回操作结束符( ; ) ,并查看触发器

MySQL(5)-mysql的事务与触发器功能

第四步 : 检测触发器结果

MySQL(5)-mysql的事务与触发器功能

第五步 : 对stu表进行delete操作 , 再次验证实验效果

MySQL(5)-mysql的事务与触发器功能

            

从实验结果可以看到 , 当我们对stu表进行数据的增删操作时 , 定义触发器后 , stu_total表会根据stu表的不同操作发生不同变化 !

        

删除触发器 :  DROP TRIGGER 解发器名称

     

注 :此例的触发器故障bug:如果stu_total表中的初始统计数据不正确,以上定义的这个触发器会导致stu_total表中统计的total值跟stu表中的总记录数信息不对称,所以这个触发器是有问题的。正确的解法是用count函数来统计stu表中的记录数,不应该用加1或减1这种做法。


优化过的正确触发器:

 # 触发器stu_insert_trigger
 
 drop  triggers  stu_insert_trigger;
 delimiter   $$
 create trigger stu_insert_trigger  after insert
     on stu for each row
     BEGIN
          update stu_total set total=(select  count(*)  from  stu);
     END$$
 delimiter  ;



       

              

您可能感兴趣的文档:

--结束END--

本文标题: MySQL(5)-mysql的事务与触发器功能

本文链接: https://www.lsjlt.com/news/38779.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL(5)-mysql的事务与触发器功能
             本篇博客介绍的是MySQL的事务功能和触发器功能 , 以及它们的用法 . 一 . MySQL事务         事务是一组原子性的SQL查询,或者说是一个独立的工作单元。事务中的所有操作...
    99+
    2022-10-18
  • MySQL事件与触发器专题精炼
    目录了解触发器和事件(定时器)什么是触发器?什么是事件(定时器)?触发器和事件(定时器)的区别创建触发器和事件(定时器)创建触发器创建事件(定时器)对触发器和时间(定时器)的操作查看...
    99+
    2022-11-13
  • MySQL数据库的触发器和事务
    目录一、触发器概念二、 触发器的操作触发器的增删改操作触发器的查看删除操作三、事务概念四、事务的操作基本流程基础操作事务的提交方式事务的隔离级别隔离操作一、触发器 概念 触发器是SQ...
    99+
    2022-11-13
    MySQL数据库触发器 MySQL数据库事务
  • MySQL 之视图、 触发器、事务、存储
    本文内容: 视图 触发器 事务 存储过程 内置函数 流程控制 索引 ---------------------------------------------------------------------...
    99+
    2023-01-31
    触发器 视图 事务
  • Mysql中的触发器定义与使用
    目录一、触发器的介绍二、触发器的语法(1)insert触发器(2)update触发器(3)delete触发器一、触发器的介绍 触发器是与表有关的数据库对象,指在insert/update/delete 之前或之...
    99+
    2022-11-30
    MySQL触发器的使用 MySQL触发器
  • 什么是 MySQL 事件以及它与触发器有何关系?
    MySQL 事件是一项基于预定义计划运行的任务,因此有时将其称为计划事件。换句话说,我们可以说MySQL事件调度是一个在后台运行并不断寻找要执行的事件的进程。它被称为临时触发器,因为它们是按时间触发的,而不是像基于表更新执行的触发器。我们可...
    99+
    2023-10-22
  • mysql中索引,触发器,事务,存储引擎的理解
    1、索引:作用于表中的某列,并将其进行排序,有助于快速地进行查询。   索引是对数据库表中一个或多个列的值进行排序的数据结构,是用于提高在数据库表中访问数据的速度的数据库对象。...
    99+
    2022-10-18
  • MySQL中的触发器和事件的使用方法
    MySQL是一种常用的关系型数据库管理系统,其强大的功能和灵活的使用方式使得它成为了众多开发者和企业的首选。在MySQL中,触发器和事件是两个重要的概念,它们能够实现诸如数据监控、数据完整性保护、数据同步等功能。本文将介绍MySQL中触发器...
    99+
    2023-10-22
    MySQL触发器 Mysql事件 触发器使用方法
  • MySQL中触发器和游标的介绍与使用
    触发器简介 触发器是和表关联的特殊的存储过程,可以在插入,删除或修改表中的数据时触发执行,比数据库本身标准的功能有更精细和更复杂的数据控制能力。 触发器的优点: 安全性:可以...
    99+
    2022-11-11
  • MySQL触发器的详细教学与实战分析
    所有知识体系文章,GitHub已收录,欢迎老板们前来Star! GitHub地址: https://github.com/Ziphtracks/JavaLearningmanual MySQL触发器 一、什么是触发器 触发...
    99+
    2020-08-28
    MySQL触发器的详细教学与实战分析
  • 如何分析MySQL基础中的触发器和事件
    本篇文章给大家分享的是有关如何分析MySQL基础中的触发器和事件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。触发器我们使用MySQL的过程中...
    99+
    2022-10-19
  • MySQL事务有哪些主要的功能
    下文我给大家简单讲讲关于MySQL事务有哪些主要的功能,大家之前了解过相关类似主题内容吗?感兴趣的话就一起来看看这篇文章吧,相信看完MySQL事务有哪些主要的功能对大家多少有点帮助吧。MySQL事务功能1....
    99+
    2022-10-18
  • MySQL触发器自动智能化的数据维护
    目录触发器介绍触发器的特性触发器语法数据准备创建触发器触发器——执行多个触发语句New Old 操作查看触发器删除触发器总结触发器介绍 触发器,就是一种特殊的存储过程。触发器和存储过程一样是一个能...
    99+
    2022-07-11
    MySQL触发器数据维护 MySQL触发器
  • MySQL之视图、触发器、事务、索引及其他知识补充
    一、视图 视图是将SQL语句的查询结果当做虚拟表实体化保存起来,以后可以反复使用 create view teacher2course as select * from teacher inner join course on ...
    99+
    2020-01-27
    MySQL之视图 触发器 事务 索引及其他知识补充
  • MySQL与Oracle 差异比较之触发器的示例分析
    小编给大家分享一下MySQL与Oracle 差异比较之触发器的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!触发器编号类...
    99+
    2022-10-18
  • 【2020Python修炼记】MySQL之 视图、触发器、事务、存储过程、函数
    【目录】(其余均为了解知识) 一 视图 二 触发器 三 事务(掌握) 四 存储过程 五 函数 六 流程控制 七、索引理论   一、视图 1、什么是视图 视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集...
    99+
    2018-03-18
    【2020Python修炼记】MySQL之 视图 触发器 事务 存储过程 函数
  • MySQL之视图、存储过程、触发器、函数、事务、动态执行SQL
    视图视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,并可以将其当作表来使用。创建视图:create view&nb...
    99+
    2022-10-18
  • MySQL事务与并发控制的知识点有哪些
    这篇文章主要介绍了MySQL事务与并发控制的知识点有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL事务与并发控制的知识点有哪些文章都会有所收获,下面我们一起来看看吧。事务概念一个事务可以理解为一组...
    99+
    2023-07-05
  • 如何使用MySQL与Python开发一个简单的登录功能
    要使用MySQL和Python开发一个简单的登录功能,需要以下步骤:1. 安装MySQL和Python的相关库:- 安装MySQL数...
    99+
    2023-10-20
    MySQL
  • MySQL和MongoDB中多文档事务支持扥功能的对比
    本篇内容介绍了“MySQL和MongoDB中多文档事务支持扥功能的对比”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作