【MySQL】数据库的事务使用
MySQL事务(Transaction)
前言
这一章学习的是MySQL事务使用,有关概念的笔记参考了MySQL事务。
1、什么是事务
MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!
- 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
- 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
- 事务用来管理 insert,update,delete 语句
一般来说,事务是必须满足4个条件(ACID)::原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。
- 原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
- 一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
- 隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
- 持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
隔离所导致的一些问题
脏读:
指一个事务读取了另外一个事务未提交的数据
虚读(幻读):
指一个事务内读取到了别的事物插入的数据,导致前后读取不一致
不可重复读:
在一个事务内读取表中的某一行数据,多次读取结果不同
2、怎么执行事务
MySQL是默认开启事务自动提交的
执行事务原理:
set autocommit = 0 --关闭
set autocommit = 1 --开启(默认的)--手动处理事务--事务开启
start transaction --标记一个事务的开启,从这个之后的sql都在同一个事务内-- 提交:持久化(成功就提交)
commit
--回滚:回到原来的样子(失败就回滚)
rollback
--事务保存点
savepoint 保存点名 --设置一个事务的保存点
rollback 保存点名 --回滚到事务的保存点
release 保存点名 --撤销指定的保存点
步骤:
1、关闭自动提交
2、开启一个事务
3、成功–> 提交 失败–> 回滚
代码实验阶段:
下面进行代码实验:
--创建转账数据库
create database shop character set utf8 collate utf8_general_ci
use shopcreate table `account`(`id` int(3) not null auto_increment,`name` varchar(30) not null,`money` decimal(9,2) not null,primary key (`id`)
)engine=innodb default charset=utf8insert into account(`name`,`money`)
values('A',2000.00),('B',1000.00)--模拟转账
set autocommit = 0 --关闭自动提交
start transaction --开启一个事务
update account set money=money-500 where `name`='A' --A减去500
update account set money=money+500 where `name`='B' --B增加500
commit; --提交事务,一旦提交就被持久化了
rollback; --回滚
set autocommit = 1 --恢复默认值
后话
MySQL事务的简单了解到这里就结束了,如果有任何的问题和错误,欢迎在评论区指出,我会一一回复!
ps:我的上一篇MySQL学习博客:MySQL学习之《索引使用》,我的下一篇MySQL学习博客:MySQL学习之《规范数据库设计》,有兴趣的小伙伴可以参考学习!
【MySQL】数据库的事务使用相关推荐
- MySQL数据库的事务管理
SQL语句在执行的过程中分为二个阶段: 1 : 执行SQL语句 2 : 将执行结果提交给数据库. 我们打开一个窗口,作为一个新的用户,现在我们看见,数据是没有变化的.也就是说,当一个事务没有完成的时候 ...
- MySQL数据库:事务和ACID实现原理
一.什么是事务: 数据库的事务是并发控制的基本单位,是指逻辑上的一组操作,要么全部执行,要么全部不执行. 1.事务的特性: (1)原子性:事务是一个不可分割的工作单元,事务里的操作要么都成功,要么都失 ...
- MySQL数据库之事务
一.概述 事务机制主要用于实现数据库对并发访问的支持和在并发访问下的数据一致性和可靠性(当多个用户访问同一份数据,一个用户更改该事物时可能会有其他用户同时发起更改请求,为保证数据库记录的更新从一个一致 ...
- mysql数据库执行事务日志_第十章 MySQL事务及其日志介绍
一.数据库升级 #1.提出方案 1)升级的方法 2)升级的步骤 3)升级的时间 4)升级步骤可能会出现的问题 5)出现的问题怎么解决,解决时间 6)升级后出现的问题 #2.搭建新的数据库 #3.备份就 ...
- MySQL数据库分布式事务XA实现原理分析
MySQL XA分为两类,内部XA与外部XA;内部XA用于同一实例下跨多个引擎的事务,由大家熟悉的Binlog作为协调者;外部XA用于跨多MySQL实例的分布式事务,需要应用层介入作为协调者(崩溃时的 ...
- mysql数据库的事务 acid 隔离级别 脏读 脏写 幻读 不可重复读
事务的四大特征 原子性(atomicity):要么全部提交(commit),要么全部回滚(rollback) 一致性(consistency):数据从一个合法状态转换成另一种合法状态 隔离性(isol ...
- mysql数据库之事务与存储过程
事务 什么是事务? 事务是指一些SQL语句的集合,这些语句同时执行成功完成某项功能 事务的CAID特性: 原子性:一个事务的执行是整体性的,要么内部所有语句都执行成功,要么一个都别想成功 一致性:事务 ...
- MySQL数据库的事务开启,提交和回滚
事务(transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位. 基于事务的原子性.一致性.隔离性和持续性特征,可以将相关的数据操作定义到一个事务 ...
- Mysql数据库之事务(山高水远,他日江湖再见)
文章目录 一.事务的概念 二.事务的ACID特点 1.原子性(Atomicity) 2.一致性(Consistency) 3.隔离性(lsolation) 4.持久性(Durability) 三.并发 ...
- mysql数据库事务_MySQL数据库的事务管理
小伙伴们不好意思,这两天有事没有及时的更新哈~希望小伙伴们见谅,那么开始我们今天的分享. MySQL 数据库的事务 我们之前分享数据库的数据操作,无外乎对数据库的数据进行增.删.改.查.就比如我们去买 ...
最新文章
- Deeplearning知识蒸馏
- 老视频修复爆火,却惹恼了历史学家:这并不是照片的本质
- GIS软件开发工具包TatukGIS Developer Kernel 发布 v11.3.0-Unstable1丨附下载
- 二叉树 | 根据前序中序遍历重建二叉树
- 无法访问虚拟机tomcat网页
- silverlight 3D 游戏开发
- python接口 同花顺_利用python探索股票市场数据指南
- Centos安装(更新)git(亲测有效)
- Caused by: java.lang.StringIndexOutOfBoundsException: length=5; regionStart=0; regionLength=-1
- Windows Workflow Foundation 培训资源
- webpack模块化原理-ES module
- Linux:20个linux常用命令
- 在Qt工程中调用GmSSL
- python节日贺卡图片大全_儿童新年贺卡图片大全
- python统计元音字母个数_Quzh[python]统计元音字母——输入一个字符串,统计处其中元音字母的数量。...
- 华为机试 (10/6)
- 论文超详细精读|五千字:STGR
- linux ./ 执行run文件,如何在Ubuntu中执行.bin和.run文件
- 厦门商标注册网商标产权关系
- 7-4 大炮打蚊子 (20分)__C++