当前位置: 首页 > 编程日记 > 正文

DB-MySQL:MySQL 事务

ylbtech-DB-MySQL:MySQL 事务

1.返回顶部
1、

MySQL 事务

MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!

  • 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务
  • 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
  • 事务用来管理 insert,update,delete 语句

一般来说,事务是必须满足4个条件(ACID)::原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

  • 原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

  • 一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。

  • 隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。

  • 持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

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

事务控制语句:

  • BEGIN或START TRANSACTION;显式地开启一个事务;

  • COMMIT;也可以使用COMMIT WORK,不过二者是等价的。COMMIT会提交事务,并使已对数据库进行的所有修改成为永久性的;

  • ROLLBACK;有可以使用ROLLBACK WORK,不过二者是等价的。回滚会结束用户的事务,并撤销正在进行的所有未提交的修改;

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

  • RELEASE SAVEPOINT identifier;删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常;

  • ROLLBACK TO identifier;把事务回滚到标记点;

  • SET TRANSACTION;用来设置事务的隔离级别。InnoDB存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。

MYSQL 事务处理主要有两种方法:

1、用 BEGIN, ROLLBACK, COMMIT来实现

  • BEGIN 开始一个事务
  • ROLLBACK 事务回滚
  • COMMIT 事务确认

2、直接用 SET 来改变 MySQL 的自动提交模式:

  • SET AUTOCOMMIT=0 禁止自动提交
  • SET AUTOCOMMIT=1 开启自动提交

事务测试

mysql> use RUNOOB; Database changed mysql> CREATE TABLE runoob_transaction_test( id int(5)) engine=innodb; # 创建数据表 Query OK, 0 rows affected (0.04 sec) mysql> select * from runoob_transaction_test; Empty set (0.01 sec) mysql> begin; # 开始事务 Query OK, 0 rows affected (0.00 sec) mysql> insert into runoob_transaction_test value(5); Query OK, 1 rows affected (0.01 sec) mysql> insert into runoob_transaction_test value(6); Query OK, 1 rows affected (0.00 sec) mysql> commit; # 提交事务 Query OK, 0 rows affected (0.01 sec) mysql> select * from runoob_transaction_test; +------+ | id | +------+ | 5 | | 6 | +------+ 2 rows in set (0.01 sec) mysql> begin; # 开始事务 Query OK, 0 rows affected (0.00 sec) mysql> insert into runoob_transaction_test values(7); Query OK, 1 rows affected (0.00 sec)

转载于:https://www.cnblogs.com/storebook/p/10208958.html

相关文章:

asp.net程序性能优化的七个方面

asp.net程序性能优化的七个方面 一、数据库操作 1、用完马上关闭数据库连接 访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资 源。ASP.NET中提供了连接池(Connection Pool&a…

如何在Windows Server 2008 Core里面添加Role~~~

SERVER CORE 中添加服务器添加AD:在SERVER CORE 下安装AD必须使用UNATTEND文件来进行安装以下是一个UNATTED文件的实例; DCPROMO unattend file (automatically generated by dcpromo); Usage:; dcpromo.exe /unattend:F:\LONGHORN.txt;[DCInstall]; New forest p…

关于MySQL的四种事务隔离级别!

本文实验的测试环境:Windows 10cmdMySQL5.6.36InnoDB 一、事务的基本要素(ACID) 原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环…

[PKUWC2018]随机算法

题意&#xff1a;https://loj.ac/problem/2540 给定一个图(n<20)&#xff0c;定义一个求最大独立集的随机化算法 产生一个排列&#xff0c;依次加入&#xff0c;能加入就加入 求得到最大独立集的概率 loj2540 「PKUWC 2018」随机算法 本质就是计数题 每个点有三种状态&#…

angular4 note

纪录作为新手&#xff0c;用新版angular遇到的一些细节点 1. .angular-cli.json文件 一开始没注意这个文件干啥的&#xff0c;直到我发现有个第三方js&#xff0c;我既没有在index.html里看到引用&#xff0c;也没看到在js代码里有import&#xff0c;找了好久&#xff0c;在这…

初学 Delphi 嵌入汇编[3] - 第一个 Delphi 与汇编的例子

前面知道了一个汇编的赋值指令(MOV), 再了解一个加法指令(ADD), 就可以做个例子了.譬如: ADD AX,BX; 这相当于 Delphi 中的 AX : AX BX;另外提前来个列表 - Delphi 可以用汇编管理以下寄存器:32 位寄存器: EAX EBX ECX EDX ESP EBP ESI EDI16 位寄存器: AX BX CX DX SP BP SI …

通过应用程序域AppDomain加载和卸载程序集之后,如何再返回原来的主程序域

实现目的&#xff1a;动态加载dll&#xff0c;执行完毕之后可以随时卸载掉&#xff0c;并可以替换这些dll&#xff0c;以在运行中更新dll中的类。 其实就是通过应用程序域AppDomain加载和卸载程序集。 在这方面微软有篇文章http://www.microsoft.com/china/msdn/archives/libra…

Sql语法---DDL

1.SQL的定义 结构化查询语言(Structured Query Language)简称SQL,SQL语句就是对数据库进行操作的一种语言。 2.SQL的作用 通过SQL语句我们可以方便的操作数据库中的数据、表、数据库等。 3.SQL的分类 1. DDL(Data Definition Language)数据定义语言用来定义数据库对象&#xff…

Java程序员三年的工作经验,却不如一个新人的工资高???

文章目录一、关于程序员的几个阶段第一阶段&#xff1a;三年第二阶段&#xff1a;五年第三阶段&#xff1a;十年二、关于项目经验三、关于专业技能1、基本语法2、集合3、设计模式4、多线程5、JDK源码6、框架7、数据库8、数据结构和算法分析9、Java虚拟机10、Web方面的一些问题四…

视觉稿与H5页面之间的终端适配

移动端页面开发备注&#xff1a;该篇文章使用宽为750px&#xff08;iPhone6的设备像素&#xff09;的视觉稿编写html代码&#xff1a;<!DOCTYPE html><html><head> <title></title> <meta charset"utf-8" /></head><bo…

欢迎大家批评:CSDN Blog用户体验调查

CSDN Blog自2004年7月上线以来&#xff0c;得到了各位用户的大力支持&#xff0c;已经成为大家发表专业技术文章和进行技术交流的园地。为了给各位作者和读者提供更好的服务&#xff0c;我们组织了这次用户问卷调查&#xff0c;希望大家能够将意见反馈给我们。 CSDN Blog团…

几个我收藏的经典网站

壁纸酷:[url]http://www.bizhiku.net[/url],XP壁纸,vista壁纸,汽车壁纸,风景壁纸,游戏壁纸,美女桌面壁纸,3d壁纸,日历月历壁纸等等,精美桌面壁纸下载.WAP中国:[url]http://www.wapcn.net[/url],专业的手机资源网站下载,手机铃声,手机游戏,手机壁纸,手机电影,手机软件,手机主题下…

用Java求一个三位数,该三位数是与其每位数字的阶乘之和

题目&#xff1a;一个三位数&#xff0c;该三位数与其每位数字的阶乘之和 代码&#xff1a; public class TestSum {public static void main(String[] args) {int a, b, c, i;//for循环找那个满足条件的三位数&#xff08;i&#xff09;for (i 100 ; i < 999; i) {a i %…

Storm 0.9安装指南

Storm 0.9.2安装指南0 Storm0.9的亮点引用网上的描写叙述&#xff1a;“Storm 0.9.0.1版本号的第一亮点是引入了netty transport。Storm网络传输机制实现可插拔形式&#xff0c;当前包括两种方式&#xff1a;原来的0mq传输&#xff0c;以及新的netty实现。在早期版本号中&#…

WinForm 设置初始位置在屏幕右下角

base.Location new Point(Screen.PrimaryScreen.WorkingArea.Width - base.Width, Screen.PrimaryScreen.WorkingArea.Height - base.Height);转载于:https://www.cnblogs.com/RobotTech/archive/2008/01/31/1059548.html

给博客增加了一个主题Nautica02Liquid

在Open Source Web Design上看到一个主题&#xff0c;觉得很不错&#xff0c;于是将其Adapted成BlogEngine的主题&#xff0c;费劲功夫改出来后发现效果不是很好&#xff0c;个人认为是汉字在某些精美的主题上倒是不很适应&#xff0c;没有办法…… 但是总归是做出来了&#xf…

php 基于socket的基本通信

php 基于socket的基本通信 1、前言 Socket是应用层与TCP/IP协议族通信的中间软件抽象层&#xff0c;它是一组接口。在设计模式中&#xff0c;Socket其实就是一个门面模式&#xff0c;它把复杂的TCP/IP协议族隐藏在Socket接口后面&#xff0c;对用户来说&#xff0c;一组简单的接…

SpringBoot实战(十四)之整合KafKa

本人今天上午参考了不少博文&#xff0c;发现不少博文不是特别好&#xff0c;不是因为依赖冲突问题就是因为版本问题。 于是我结合相关的博文和案例&#xff0c;自己改写了下并参考了下&#xff0c;于是就有了这篇文章。希望能够给大家帮助&#xff0c;少走一些弯路。 一、KafK…

Java 对象的生命周期

Java对象的生命周期 在Java中&#xff0c;对象的生命周期包括以下几个阶段&#xff1a; 创建阶段(Created)应用阶段(In Use)不可见阶段(Invisible)不可达阶段(Unreachable)收集阶段(Collected)终结阶段(Finalized)对象空间重分配阶段(De-allocated) 图1. JavaObject Life Cyc…

ThinkPad -- Intel 无线网卡网络连接方法限制及无法用 Fn + F5 控制的问题

[url]http://www-900.ibm.com/cn/support/tscdoc/html/JLII-6R6E5C.HTML[/url]文章编号:JLII-6R6E5CThinkPad -- Intel 无线网卡网络连接方法限制及无法用 Fn F5 控制的问题适用机型:所有ThinkPad R50; 所有ThinkPad R50e; 所有ThinkPad R50p; 所有ThinkPad R51; 所有ThinkPad…

TreeSet集合(自然排序和比较器排序)

TreeSet集合自然排序和比较器排序 ​ 当指执行插入排序、希尔排序、归并排序等算法时&#xff0c;比较两个对象“大小”的比较操作。我们很容易理解整型的 i>j 这样的比较方式&#xff0c;但当我们对多个对象进行排序时&#xff0c;如何比较两个对象的“大小”呢&#xff1…

java字节流

一 字节流 1.1字节输出流OutputStream OutputStream是一个抽象类&#xff0c;操作的数据都是字节。 输出流中定义都是写write方法&#xff0c;如下图: 1.1.1 FileOutputStream类 OutputStream有很多子类&#xff0c;其中子类FileOutputStream可用来写入数据到文件。FileOutput…

MySQL:讨人喜欢的 MySQL replace into 用法(insert into 的增强版)

讨人喜欢的 MySQL replace into 用法&#xff08;insert into 的增强版&#xff09; 在向表中插入数据的时候&#xff0c;经常遇到这样的情况&#xff1a;1. 首先判断数据是否存在&#xff1b; 2. 如果不存在&#xff0c;则插入&#xff1b;3.如果存在&#xff0c;则更新。 在 …

读农民工兄弟学C#文章后的感觉

呵呵,这些文章让原本枯燥的技术文章变得简单,通俗,易懂此类文章是编程入门新手必读的好文章,当然高手可以看一下这些文章的语言风格,等日后自己出书时,可以参考之!哈哈,哪天我也出一本属于自己的技术书^_^好可惜的是自己离"高手"还有那么一段路要走!当然喽,我不是高手…

36晋级12第五场:冯志刚决胜入围(节目视频)

视频地址&#xff1a;[url]http://win.cn.yahoo.com/070613/16/mn53.html[/url]比赛时间&#xff1a;2007年4月17日 选手&#xff1a;王阳、冯志刚、刘恩霞、王嵩 评委&#xff1a; 熊晓鸽&#xff1a;IDG创业投资基金 创始合伙人 马云&#xff1a;阿里巴巴集团董事局主席及雅虎…

顯示密碼安全性強度

<div class"from-nav"><div class"Mtitle"><span>密码:</span></div><div class"Mright"><input name"password"type"password"id"password"size"20"class&quo…

HashMap集合遍历的五种方式

文章目录创建HashMap集合&#xff0c;添加数据一、第一种foreach遍历二、第二种foreach遍历三、第一种迭代器遍历 效率高&#xff08;建议使用&#xff09;四、第二种迭代器遍历 效率低&#xff08;不建议使用&#xff09;五、JDK8新特性&#xff0c;通过lambda遍历Map创建Hash…

JAVA核心技术I---JAVA基础知识(查漏补缺private,static)

一&#xff1a;private对于类和对象&#xff08;同C&#xff09; private是只有这个类内部可以访问&#xff08;类的成员函数和定义初始化&#xff09; private是类之间的限制&#xff0c;而不是对对象的限制《重点》 同类对象是可以直接访问对象的私有成员 class priTest{priv…

『TensorFlow』命令行参数解析

argparse很强大&#xff0c;但是我们未必需要使用这么繁杂的东西&#xff0c;TensorFlow自己封装了一个简化版本的解析方式&#xff0c;实际上是对argparse的封装 脚本化调用tensorflow的标准范式&#xff1a; import pprint import tensorflow as tfflags tf.app.flags# 脚本…

IIS重起批处理

将以下代码保存到一个BAT文件中,执行后便可释放所有被锁定的组件。执行顺序是&#xff1a;停止&#xff37;&#xff37;&#xff37;服务&#xff0d;〉停止组件保护&#xff0d;〉开启组件保护&#xff0d;〉开启&#xff37;&#xff37;&#xff37;服务。net stop w3svc /…