我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL中有哪些事务控制语句

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL中有哪些事务控制语句

今天就跟大家聊聊有关MySQL中有哪些事务控制语句,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

事务SQL 控制语句

MySQL事务遵从ACID:

• Atomic(原子性):所有语句作为一个单元全部成功执行或全部取消。

• Consistent(一致性):如果数据库在事务开始时处于一致状态,则在执行该事务期间将保留一致状态。

• Isolated(隔离性):事务之间不相互影响。

• Durable(持久性):事务成功完成后,所做的所有更改都会准确地记录在数据库中。所做的更改不会丢失

1) 事务SQL 控制语句

• START TRANSACTION(或BEGIN):显式开始一个新事务

• SAVEPOINT:分配事务过程中的一个位置,以供将来引用

• COMMIT:永久记录当前事务所做的更改

• ROLLBACK:取消当前事务所做的更改

• ROLLBACK TO SAVEPOINT:取消在savepoint 之后执行的更改

• RELEASE SAVEPOINT:删除savepoint 标识符

• SET AUTOCOMMIT:为当前连接禁用或启用默认autocommit 模式

2) AUTOCOMMIT 模式

如何设置 AUTOCOMMIT 模式决定了如何以及何时开始新事务。默认情况下,AUTOCOMMIT 处于全局启用状态,这意味着会强制每个 SQL 语句隐式开始一个新事务。可以通过一个选项文件全局禁用 AUTOCOMMIT,也可以通过设置 autocommit 变量为每个会话禁用它。启用 AUTOCOMMIT 会限制每个语句,并进而影响其自身事务中的事务表。这样可以有效地防止在一个事务中执行多个语句。这意味着,您将无法通过 COMMIT 或 ROLLBACK 作为一个单元提交或回滚多个语句。有时,会将这种情况误认为根本没有事务。但是,情况并非如此。启用 AUTOCOMMIT 后,每个语句仍会以原子方式执行。例如,通过在插入多个行时比较违反约束限制的效果,便可看出启用 AUTOCOMMIT 和根本不具有事务之间的差别。在非事务表(如 MyISAM)中,一旦发生错误,语句就会终止,已经插入的行会保留在该表中。而对于 InnoDB 表,已经插入的所有行都会从该表中删除,从而不会产生任何实际影响。

AUTOCOMMIT确定开始新事务的方式和时间;默认情况下, AUTOCOMMIT 模式处于启用状态:作为一个事务隐式提交每个语句;

在my.cnf中将 AUTOCOMMIT 模式设置为 0,或者SET GLOBAL AUTOCOMMIT=0;SET SESSION AUTOCOMMIT=0; SET @@AUTOCOMMIT :=0; 则禁用 AUTOCOMMIT,事务会跨越多个语句,需要使用 COMMIT 或 ROLLBACK 结束事务;

使用 SELECT 检查 AUTOCOMMIT 设置:

SELECT @@AUTOCOMMIT;

3) 隐式提交

COMMIT 语句始终会显式提交当前事务。其他事务控制语句(例如,本幻灯片列出的语句)还具有隐式提交当前事务的作用。除了这些事务控制语句之外,其他类型的语句可能也具有隐式提交并进而终止)当前事务的作用。这些语句的行为就像在执行实际语句之前发出 COMMIT 一样。此外,这些语句本身并非事务语句,也就是说,如果成功,则无法回滚。通常,数据定义语句、据访问和用户管理语句以及锁定语句具有这种效果。

注:有很多例外情况,而且这些语句并非都能在所有版本的服务器上导致隐式提交。但是,建议将所有非 DML 语句都视为可导致隐式提交。有关导致隐式提交的完整语句列表,请参阅《MySQL 参考手册》:http://dev.mysql.com/doc/refman/5.6/en/implicit-commit.html

隐式提交会终止当前事务。用于隐式提交的 SQL 语句:

l  START TRANSACTION

l  SET AUTOCOMMIT = 1

导致提交的非事务语句:

l  数据定义语句(ALTER、 CREATE 和 DROP)

l  管理语句(GRANT、 REVOKE 和 SET PASSWORD)

l  锁定语句(LOCK TABLES 和 UNLOCK TABLES)

导致隐式提交的语句示例:

Mysql>TRUNCATE TABLE

Mysql>LOAD DATA INFILE

4) 事务存储引擎

使用 SHOW ENGINES 列出引擎特征:

mysql> SHOW ENGINES\G

********************* 2. row *********************

Engine: InnoDB

Support: DEFAULT

Comment: Supports transactions, row-level locking,

and foreign keys

Transactions: YES

XA: YES

Savepoints: YES

********************* 1. row *********************

Engine: MyISAM

Support: YES

Comment: MyISAM storage engine

Transactions: NO

XA: NO

Savepoints: NO

看完上述内容,你们对MySQL中有哪些事务控制语句有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL中有哪些事务控制语句

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

下载Word文档

猜你喜欢

java中有哪些流程控制语句

java中有哪些流程控制语句?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。程序的结构分类:顺序结构:按照写代码的顺序 一次执行 选择结构:根据条件的不同有选择的执行不同的代码循
2023-05-31

JAVA中的流控制语句有哪些

本篇内容主要讲解“JAVA中的流控制语句有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JAVA中的流控制语句有哪些”吧!与 C、 C++相 同 ,Java程 序 通 过 流 控 制 来 执
2023-06-03

JAVA中的流程控制语句有哪些

这期内容当中小编将会给大家带来有关JAVA中的流程控制语句有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。第一节 JAVA条件语句之if语句1.单独的if语句,语法:if(条件){条件成立时执行的代码
2023-05-31

php中的循环控制语句有哪些

这篇文章给大家介绍php中的循环控制语句有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。PHP开发环境搭建工具有哪些一、phpStudy,是一个新手入门最常用的开发环境。二、WampServer,WampServe
2023-06-14

php有哪些流程控制语句

php有哪些流程控制语句?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。php有什么特点1、执行速度快。2、具有很好的开放性和可扩展性。3、PHP支持多种主流与非主流的数据库。4
2023-06-14

golang流程控制语句有哪些

流程控制语句:1、if语句,由一个布尔表达式后紧跟一个或多个语句组成;2、“if…else”语句,else中的表达式在布尔表达式为false时执行;3、switch语句,用于基于不同条件执行不同动作;4、select语句;5、for循环语句,语法“for k,v := range oldmap{newmap[k]=v}”;6、循环控制语句break、continue、goto。
2023-05-14

golang流程控制语句有哪些?

常见的流程控制语句有if语句、for循环、switch语句、select语句、break和continue语句、goto语句。详细介绍:1、if语句: 用于条件性地执行一段代码块;2、for循环: 用于重复执行一段代码块;3、switch语
golang流程控制语句有哪些?
2023-12-21

linux shell流程控制语句有哪些

本篇内容主要讲解“linux shell流程控制语句有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux shell流程控制语句有哪些”吧!一、shell条件语句(if用法)if语句结
2023-06-09

python的流程控制语句有哪些

python的流程控制语句有:1、if语句,根据条件执行不同的代码块;2、for循环,用于遍历一个序列或其他可迭代对象;3、while循环,当给定条件为真时,重复执行一段代码;4、break语句,用于终止当前循环,跳出整个循环;5、cont
python的流程控制语句有哪些
2023-12-11

Java的流程控制语句有哪些

本篇内容介绍了“Java的流程控制语句有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!01、if-else 相关1)if 语句if 语句
2023-06-16

MySQL中sql语句有哪些

小编给大家分享一下MySQL中sql语句有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!以下两个表格做讲解SELECTSELECT "字段" FROM "表名
2023-06-29

编程热搜

目录