mysql的事务语句_MySQL提供的事务控制语句

在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, 在事务提交后会自动断开与服务器的连接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552711.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql输出美式报表_Navicat for MySQL 如何预览报表

Navicat for MySQL 使用用户友好 GUI 报表创建工具创建各种不同类型的报表,设计发票、统计、邮寄标签及更多其他报表。输出报表到多种格式,如 text、PDF、Lotus、Excel、Graphic、Html 及更多。Navicat Report Viewer 可浏览由报表创建工具设计的报表&am…

Win7启动mysql无法启动_Win7系统中MySQL服务无法启动的解决方法

Win7系统中提示:本地无法启动MySQL服务,报的错误:1067,进程意外终止的解决方法。在本地计算机无法启动MYSQL服务错误1067进程意外终止。这种情况一般是my.ini文件配置出错了1、首先找到这个文件: Win7下的默认安装路径…

mysql 测试数据的脚本_Mysql脚本 生成测试数据

Mysql脚本 生成测试数据使用:./xie.sh -uroot -p123456#!/bin/bash#混合测试数据库脚本#将创建一个single数据库,其中创建一个s1表#如果数据库存在,将会写入数据,可以在写入部分sleep 1 来让数据持续写入#使用方法 ./xx.sh -uroot…

c mysql 双主复制_mysql双主复制及使用keepalived作高可用的配置详解

1、系统环境架构 vip 192.168..45.244mysql-1:192.168.45.238mysql-2:192.168.45.2392、mysql双主设置192.168.45.238 代码示例:#vim /etc/my.cnf[client]port 3306socket /tmp/mysql.sock[mysqld]port 3306socket /tmp/mysql.sockdatadir/usr/local/mysql/var/s…

mysql jdbc execute_JDBC中execute、executeQuery和executeUpdate的区别

欢迎大家访问我的个人博客(https://zhuchuanliang.github.io),才刚刚开始搞,还有很多要改进的地方,希望大家指点。Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。使用哪一个方法由 SQL 语…

mysql和jfinal的区别_mysql与JFinal的数据关系-阿里云开发者社区

mysql与jfinal在使用过程中,一定要弄清楚数据关系,否则容易发生类型不匹配的错误。一、关系整理为此,我根据jfinal的源码和mysql的数据字段类型,整理列表如下:mysqljfinal例子编号varchar, char, enum, set, text, tin…

mysql server_id作用_MySQL复制过程中server-id的理解

一. server-id做什么用的,你知道吗?1、 MySQL的同步的数据中是包含server-id的,用于标识该语句最初是从哪个server写入的,所以server-id一定要有的2、 每一个同步中的slave在master上都对应一个master线程,该线程就…

java如何解析cron成可视化_宅家30天,2万字节java高级工程师面试题解析,如何斩获阿里p7...

宅家里一个月,“闭关修炼”的你是不是正在为金三银四跳槽季发愁呢?小编今天说的这富含的15个互联网大厂Java高级工程师核心面试问题整理!内容包括:kafka面试题及解析18道ZooKeeper面试题及解析28道Linux 面试真题及解析45道MySQL面…

java接口如何接受语音参数_Java 是如何优雅地实现接口数据校验的?

作者 | 无敌码农 责编 | 张文头图 | CSDN 下载自东方 IC来源 | 无敌码农(ID:jiangqiaodege)本篇文章给大家分享平时开发中总结的一点小技巧!在工作中写过 Java 程序的朋友都知道,目前使用 Java 开发服务最主流的方式就是通过 Spring MVC 定义…

msp430单片机 温度计编程_MSP430系列与89C5l系列的比较

1、89C51单片机是8位单片机。其指令是采用的被称为“CISC”的复杂指令集,共具有111条指令。而MSP430单片机是16位的单片机,采用了精简指令集(RISC)结构,只有简洁的27条指令,大量的指令则是模拟指令,众多的寄存器以及片…

php 正则表达式提取出合法的时间_PHP正则表达式核心技术完全详解 第1节

PHP正则表达式核心技术 第1节正则表达式: 就是描述字符串排列模式的一种自定义语法规则、也是用于描述字符串排列 或 匹配模式的一种语法规则、正则表达式: 就是用于描述字符串排列 或 匹配模式的一种语法规则、它主要用于字符串的: 分割字符串、查找字符串、替换字符串 的一系…

anacoda2如何连接使用mysql_Anaconda 安装 Python 库(MySQLdb)的方法-(转)

安装python库的过程中,最重要的地方就是版本需要兼容。其中操作系统为64位,Python为2.X 64位,下载安装文件的时候也要注意版本匹配。其中文件名中包含的cp27表示CPython 2.7版本,cp34表示CPython 3.4,win_amd64指的是6…

mysql 字段等于select_mysql_select_计算字段_数据处理函数_5

二十一、创建计算字段1、 concat() 把两个字段拼接起来select concat(lie_name1,间隔符,lie_name2) fromtable_name;选择出 name-type(price)这样的格式输出,按id从小到大排序mysql> selectconcat(name,-,type,(,price,)) from goods order by id;--…

php mysql随机记录_php随机取mysql记录方法小结

这篇文章主要介绍了php随机取mysql记录方法,实例分析了几种常见的随机获取mysql数据的方法,是非常实用的技巧,具有一定的参考借鉴价值,需要的朋友可以参考下本文实例总结了php随机取mysql记录方法。分享给大家供大家参考。具体分析如下:在php中要随机取mysql记录我们…

mysql 主从备份问题_我遇到的mysql主从同步的问题

测试mysql主从同步的问题,主从同步test库。主库:rootttt 11:00>use test;Database changedroottest 11:00>show tables;----------------| Tables_in_test |----------------| a |----------------从库:root(none) 11:01>use test;D…

中西方对时间的差异_中西文化的差异-2 时间观

中西文化的差异-2 时间观时间和空间存在不可思议的相似性。因此,人们对时间的不同理解可分为两种时空观念———直线型和循环型。大体而言,英语国家的人认为时间是直线型,客观顺序是把事件分为过去,现在,将来三种时态(…

java开发环境怎么写_Java开发基础设置:如何配置Java运行环境

很多朋友都有自学Java的愿望,但是自学一门语言何其艰难,没人指引的话往往不得其门而入。那么,今天千锋老师就给大家带来Java入门课程中配置Java运行环境的方法,希望能够对大家有所帮助。一、JDK安装 什么是JVMJava Virtual Machin…

被动声呐 相移波束形成_100天计划-DAY9-拖曳声呐

拖曳线列阵声纳是拖曳在距舰船尾部一定距离的声接收系统(通常称为线列阵),通过接收航行目标自身辐射的噪声或者通过接收目标反射回来的信号,来检测目标的有无并估计目标有关参数。拖曳线列阵声纳可以分为主动、被动和主被动联合三…

mongodb转实体对像_MongoDB:实体对象(javabean)转DBObject

packageutils;importjava.lang.reflect.Field;importcom.mongodb.BasicDBObject;importcom.mongodb.DBObject;importpojo.User;public classBeanFromDBObject {/*** Description:bean-->DBObject*parambean*returnDBObject 返回类型*/public static DBObject getDBObject(T …

mysql四种隔离级别知乎_详解MySQL事务的四大特性和隔离级别

1、事务的四大特性(ACID)1.1、原子性(Atomicity) 原子性是指事务包含的一系列操作要么全部成功,要么全部回滚,不存在部分成功或者部分回滚,是一个不可分割的操作整体。1.2、一致性(Consistency)一致性是可以理解为事务对数据完整性约束的遵循…