在MySQL命令行的默认设置下,事务都是自动提交的,即执行SQL语句后就会马上执行COMMIT操作。因此要显式地开启一个事务需要使用命令BEGIN, START TRANSACTION, 或者执行命令SET AUTOCOMMIT=0, 禁用当前会话的自动提交。

每个数据库厂商自动提交的设置都会不相同,每个DBA或开发人员需要非常明白这一点,这对之后的SQL编程会有非凡的意义,因此用户不能以之前的经验来判断MySQL数据库的运行方式。

MySQL为开发者提供了三种类型的事务,分别是扁平化事务,带保存点的事务,链式事务。通过带保存点的事务还可以模拟实现嵌套事务。

START TRANSACTION | BEGIN

显式地开启一个事务。

COMMIT

要想使用这个语句的最简形式,只需要发出COMMIT。也可以更详细一点,写为COMMIT WORK, 不过这两者几乎是等价的。COMMIT会提交事务,并使得已对数据库做的修改称为永久性的。

ROLLBACK

要想使用这个语句的最简形式,只需要发出ROLLBACK。同样地,也可以写为ROLLBACK WORK,但两者几乎是等价的。回滚会结束用户的事务,并撤销正在进行的所有未提交的修改。

SAVEPOINT identity

SAVEPOINT允许在事务中创建一个保存点,一个事务中可以有多个SAVEPOINT。

RELEASE SAVEPOINT identity

删除一个事务的保存点,当没有一个保存点执行这语句时,会抛出一个异常。

ROLLBACK TO [SAVEPOINT] identity

这个语句与SAVEPOINT命令一起使用。可以把事务回滚到标记点,而不回滚在此标记点之前的任何工作。

例如,可以发出两调UPDATE语句,后面跟一个SAVEPOINT, 然后又是两条DELETE语句。如果执行DELETE语句期间出现了某种异常情况,并且捕获到这个异常,同时发出了ROLLBACK TO SAVEPOINT命令,事务就会回滚到指定的SAVEPOINT,撤销DELETE完成的所有工作,而UPDATE语句完成的工作不受影响。

SET TRANSACTION

这个语句用来设置事务的隔离级别。

InnoDB存储引擎提供的事务隔离级别有:READ UNCOMMITED

READ COMMITTED

REPEATABLE READ

SERIALIZABLE

START TRANSACTION, BEGIN语句都可以在MySQL命令行下显示地开启一个事务。但是在存储过程中,MySQL数据库的分析器会自动将BEGIN识别为BEGIN...END, 因此在存储过程中只能使用START TRANSACTION语句来开启一个事务。

COMMIT和COMMIT WORK语句基本是一致的,都是用来提交事务。不同之处在于COMMIT WORK用来控制事务结束后的行为是CHAIN还是RELEASE的。如果是CHAIN方式,那么事务就变成了链事务。

用户可以通过参数completion_type来进行控制,该参数默认为0,表示没有任何操作。

当参数completion_type的值为1时,COMMIT WORK等同于COMMIT AND CHAIN, 表示马上自动开启一个相同隔离级别的事务。

当参数completion_type的值为2时,COMMIT WORK等同于COMMIT AND RELEASE, 在事务提交后会自动断开与服务器的连接。

mysql的事务语句_MySQL提供的事务控制语句相关推荐

  1. mysql语句中事务可靠性_MYSQL中的事务

    我们来看一下住户退房这个业务需要做什么事情? 要更新该用户的离开时间.总金额 需要更新用户所住的房屋的状态为空闲 由此可见,以上需要两个SQL来实现. 发现问题:若某一个SQL语句执行出错的情况下,另 ...

  2. mysql sql 事务写作_mysql中的事务

    MySQL事务相关 一. 什么是事务 事务(Transaction)是一个逻辑序列,该序列要么执行,要么不执行. 例如:转换业务 A 给 B 转账 1000 元,设计两个操作: A减少1000元 B增 ...

  3. mysql 事物隔离界别_MySQL锁与事务隔离级别

    ------------恢复内容开始------------ 一.概述 1.锁的定义 锁是计算机协调多个进程或线程并发访问某一资源的机制. 在数据库中,除了传统的计算资源(如CPU.RAM.IO等)的 ...

  4. mysql事物开始命令_MySQL命令行事务

    mysql中,事务是一些数据库操作语句,有3个特点: 1.只有使用了InnoD引擎的数据库或者表支持事务 2.事务可以用来维护数据库完整性,保证成批的sql语句要么全执行,要么全不执行,不会出现部分执 ...

  5. mysql事务实战_MySQL - 实战 (2) - 事务隔离

    MySQL - 实战 (2) - 事务隔离 1 事务相关概念 MySQL 中,事务支持是在引擎层实现的 MySQL 是一个支持多引擎的系统,但并不是所有的引擎都支持事务 MySQL 原生的 MyISA ...

  6. mysql事务机制_MySQL系列:事务机制

    一.MySQL并发访问控制 1.并发控制机制 (1)锁机制 资源竞争时候,多个线程表示多个用户会话:通过读写锁机制实现 读锁:共享锁,可以多个用户同时读取同一资源文件 写锁:独占锁,当一个用户对资源文 ...

  7. mysql四种输入_mysql四种事务隔离级别

    mysql事务并发问题 ACID什么的就不啰嗦了.mysql多个事务并发的时候,可能会出现如下问题: 1. 更新丢失 即两个事务同时更新某一条数据,后执行的更新操作会覆盖先执行的更新操作,导致先执行的 ...

  8. mysql8事务级别_Mysql几种事务隔离级别

    前言:之前对mysql的基础知识通过了几篇博客进行了一个详解,包括从数据库系统的原理以及最基本的操作使用,此篇博客将主要对mysql的事务级别进行实战分析 1.什么是事务? 事务是应用程序中一系列严密 ...

  9. mysql update from 语句_MySQL高频面试题01期:一条update语句的生命历程

    在有关 MySQL 的面试时,是不是曾经有被问到过:一条 update 语句的生命历程是怎样的?今天就来聊聊这一面试题. 这篇文章通过这条语句进行讲解: update test set a=5 whe ...

最新文章

  1. 树莓派的Raspbian Stretch with desktop和Ubuntu Mate(废弃)
  2. [CTO札记]高效能辅导(Coach)转摘
  3. vscode拼写错误提醒消失
  4. boost::intrusive::stateful_value_traits用法的测试程序
  5. 真是,原来可以这样啊
  6. java file 字符串_Java读取一个文本文件拼接成一个字符串(readFileToString)
  7. jQuery基本知识
  8. 淘宝美工实用素材|轻松交作业过稿
  9. sequelize怎么看插入的数据成功不成功_Google Sheet使用分享:柱形图断层图 异常数据和其他数据和谐共处之道...
  10. 熊猫删除重复行– drop_duplicates()函数
  11. [论文翻译]NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE
  12. Caffe傻瓜系列(4):其它常用层及参数
  13. centos7.x/RedHat7.x重命名网卡名称
  14. 自动整理html书签,Bookmarks Organizer - Chrome书签整理排序
  15. java记事本统计功能_JAVA 运用流编程实现简单的记事本功能
  16. 服务器显示拥挤进不去怎么办,《拥挤城市》游戏进不去怎么办 玩不了解决方法...
  17. 微信小程序之订阅消息之PHP。
  18. 龙芯平台上的容器和CI/CD实现方案
  19. 英语单词音近形似转化规律研究
  20. Linux Ext 文件系统

热门文章

  1. Mysql windows 安装提示MSVCR120.dll文件丢失
  2. 1.android体系结构介绍
  3. Jquery mobile问题总汇
  4. quick time不可用_那些校园中“不可言说”的鄙视链
  5. kafka java获取topic_通过编程方式获取Kafka中Topic的Metadata信息
  6. duration java_Java Duration类| ofHours()方法与示例
  7. java日历类add方法_Java日历setFirstDayOfWeek()方法与示例
  8. Java LocalDate类| getChronology()方法与示例
  9. math 计算float_Java Math类静态float min(float f1,float f2)与示例
  10. c语言定义5个元素数组, 对数组进行从小到大排序,定义一个5行5列的二维数组,并动态赋值,将第3列的数组进行从小到大的排序...