一、事务

一个事务由一系列操作组成,这些操作必须全部执行,而不能仅执行一部分。

如果事务失败,所有操作就必须全部撤销,效果就和没有执行这些操作一样,不会对之前的数据有任何改动。

二、数据库事务具有ACID特性

  • A:Atomic,原子性,将所有SQL作为原子工作单元执行,要么全部执行,要么全部不执行;
  • C:Consistent,一致性,事务完成后,所有数据的状态都是一致的,即A账户只要减去了100,B账户则必定加上了100;
  • I:Isolation,隔离性,如果有多个事务并发执行,每个事务作出的修改必须与其他事务隔离;
  • D:Duration,持久性,即事务完成后,对数据库数据的修改被持久化存储。

三、实例

1.隐式事务

对于单条SQL语句,数据库系统自动将其作为一个事务执行,这种事务被称为隐式事务

-- 第一步:将id=1的A账户余额减去100
UPDATE accounts SET balance = balance - 100 WHERE id = 1;

2. 显式事务

要手动把多条SQL语句作为一个事务执行,

  • 使用BEGIN开启一个事务,
  • 使用COMMIT提交一个事务,

这种事务被称为显式事务

BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;

3. 主动回滚事务

有些时候,我们希望主动让事务失败,这时,可以用ROLLBACK回滚事务,整个事务会失败:

BEGIN;-- 从id=1的账户给id=2的账户转账100元
-- 第一步:将id=1的A账户余额减去100
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- 第二步:将id=2的B账户余额加上100
UPDATE accounts SET balance = balance + 100 WHERE id = 2;ROLLBACK;

https://www.liaoxuefeng.com/wiki/1177760294764384/1179611198786848

数据库学习笔记1-事务 transaction相关推荐

  1. 数据库学习笔记:事务的特性和隔离级别

    事务特性:ACID AID是为了C服务的: 隔离级别与引发的问题: 隔离等级/问题 数据丢失 脏读 不可重复度 幻读 无限制 YES YES YES YES READ UNCOMMITTED NO Y ...

  2. 数据库学习笔记(1)

    数据库学习笔记(1) 文章目录 数据库学习笔记(1) @[toc] DB 基本概念 连接数据库的三要素 元数据 mongoose 查询符合对象数组中某个对象的值 redis 是什么 存储的数据类型 r ...

  3. 【数据库学习笔记】——cursor游标对象

    目录 1.创建cursor对象 2.cursor对象常用方法 3.操作数据库的常见流程(五部曲) 课程视频链接: 第14节 Python操作数据库_哔哩哔哩_bilibili666https://ww ...

  4. linux数据库创建score表,MySQL数据库学习笔记

    MySQL数据库学习笔记phpma (实验环境:Redhat9.0,MySQL3.23.54) 纲要: 一,连接MySQL phpma 二,MySQL管理与授权 三,数据库简单操作 四, 数据库备份 ...

  5. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  6. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  7. 【数据库学习笔记】Day03 - SQL语言基础及数据库定义功能

    [数据库学习笔记]Day03 - SQL语言基础及数据库定义功能 〇.本文所用数据库表格: 一.关系运算: 关系运算,数学名词,基本运算有两类:一类是传统的集合运算(并.差.交等),另一类是专门的关系 ...

  8. 数据库学习笔记(一) | 数据(Data)的定义

    数据库学习笔记(一) | 数据(Data)的定义和种类 什么是数据(Data) 结构化数据(Structured Data) 半结构化数据(Semi-structured Data) 非结构化数据(U ...

  9. 国产达梦数据库学习笔记(一):NeoKylin7.0安装及配置与常用基础命令

    国产达梦数据库学习笔记(一):NeoKylin7.0安装及配置与常用基础命令 以VMware Workstation Pro 15环境下的NeoKylin7.0与DM8为例 中标麒麟系统NeoKyli ...

  10. 【数据库学习笔记】Day06 - 关系数据库规范化理论

    [数据库学习笔记]Day06 - 关系数据库规范化理论 目录 一.关系数据库中存在的数据冗余问题 二.函数依赖 三.关系规范化 一.关系数据库中存在的数据冗余问题: 以学生信息表为例: 该关系模式存在 ...

最新文章

  1. mybatis-generator修改源码2
  2. kafka 分区和副本以及kafaka 执行流程,以及消息的高可用
  3. vs xaml 语句完成 自动列出成员_数据传输 | mysqldiff/mysqldbcompare 实现 DTLE 自动化测试...
  4. 【Liteos系列】之osCmdReg
  5. vim常用命令(二)
  6. 如何写一封好的情书?Python三步爬取全网情诗信息
  7. C语言:根据集合元素有互异性,将两个集合并集(一种方法之一)
  8. 阴阳师最新的服务器,阴阳师6月30日正式服务器更新内容一览
  9. 牛客错题集C++(一)
  10. 20144306《网络对抗》MAL_恶意代码分析
  11. 顶峰网谈百度关键词排名基本规则
  12. vue项目实现路由按需加载(路由懒加载)的3种方式
  13. 倍福--PLC变量链接
  14. vue打包生成zip压缩包
  15. 罗技F710手柄使用教程-ROS
  16. BFC以及清除浮动四种方式
  17. 安卓百度地图之定位图标在地图上显示
  18. 百度地图https访问方式
  19. ubuntu20.04安装思维导图软件MindMaster、XMind
  20. 如何在Salesforce Lightning组件中创建模态/弹出框

热门文章

  1. 树线段hdu 4508 美素数(线段树)
  2. 晓月antivirV8P绿色汉化扫描自由版
  3. Sql语句分页,有待优化
  4. 初学 python 之 HAproxy配置文件操作
  5. ios网络编程(二)之网络连接
  6. Mybatis与hibernate
  7. 替换过的mysql能找回来_MySQL 误操作后数据恢复(update,delete忘加where条件)
  8. linux 动态输出函数名,控制linux动态链接库导出函数
  9. 拓端tecdat|使用R语言进行多项式回归、非线性回归模型曲线拟合
  10. android碎片按钮,Android 碎片学习 之 如何在碎片调用Activity中的方法来进行赋值操作...