数据库学习笔记1-事务 transaction
一、事务
一个事务由一系列操作组成,这些操作必须全部执行,而不能仅执行一部分。
如果事务失败,所有操作就必须全部撤销,效果就和没有执行这些操作一样,不会对之前的数据有任何改动。
二、数据库事务具有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相关推荐
- 数据库学习笔记:事务的特性和隔离级别
事务特性:ACID AID是为了C服务的: 隔离级别与引发的问题: 隔离等级/问题 数据丢失 脏读 不可重复度 幻读 无限制 YES YES YES YES READ UNCOMMITTED NO Y ...
- 数据库学习笔记(1)
数据库学习笔记(1) 文章目录 数据库学习笔记(1) @[toc] DB 基本概念 连接数据库的三要素 元数据 mongoose 查询符合对象数组中某个对象的值 redis 是什么 存储的数据类型 r ...
- 【数据库学习笔记】——cursor游标对象
目录 1.创建cursor对象 2.cursor对象常用方法 3.操作数据库的常见流程(五部曲) 课程视频链接: 第14节 Python操作数据库_哔哩哔哩_bilibili666https://ww ...
- linux数据库创建score表,MySQL数据库学习笔记
MySQL数据库学习笔记phpma (实验环境:Redhat9.0,MySQL3.23.54) 纲要: 一,连接MySQL phpma 二,MySQL管理与授权 三,数据库简单操作 四, 数据库备份 ...
- MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- 【数据库学习笔记】Day03 - SQL语言基础及数据库定义功能
[数据库学习笔记]Day03 - SQL语言基础及数据库定义功能 〇.本文所用数据库表格: 一.关系运算: 关系运算,数学名词,基本运算有两类:一类是传统的集合运算(并.差.交等),另一类是专门的关系 ...
- 数据库学习笔记(一) | 数据(Data)的定义
数据库学习笔记(一) | 数据(Data)的定义和种类 什么是数据(Data) 结构化数据(Structured Data) 半结构化数据(Semi-structured Data) 非结构化数据(U ...
- 国产达梦数据库学习笔记(一):NeoKylin7.0安装及配置与常用基础命令
国产达梦数据库学习笔记(一):NeoKylin7.0安装及配置与常用基础命令 以VMware Workstation Pro 15环境下的NeoKylin7.0与DM8为例 中标麒麟系统NeoKyli ...
- 【数据库学习笔记】Day06 - 关系数据库规范化理论
[数据库学习笔记]Day06 - 关系数据库规范化理论 目录 一.关系数据库中存在的数据冗余问题 二.函数依赖 三.关系规范化 一.关系数据库中存在的数据冗余问题: 以学生信息表为例: 该关系模式存在 ...
最新文章
- mybatis-generator修改源码2
- kafka 分区和副本以及kafaka 执行流程,以及消息的高可用
- vs xaml 语句完成 自动列出成员_数据传输 | mysqldiff/mysqldbcompare 实现 DTLE 自动化测试...
- 【Liteos系列】之osCmdReg
- vim常用命令(二)
- 如何写一封好的情书?Python三步爬取全网情诗信息
- C语言:根据集合元素有互异性,将两个集合并集(一种方法之一)
- 阴阳师最新的服务器,阴阳师6月30日正式服务器更新内容一览
- 牛客错题集C++(一)
- 20144306《网络对抗》MAL_恶意代码分析
- 顶峰网谈百度关键词排名基本规则
- vue项目实现路由按需加载(路由懒加载)的3种方式
- 倍福--PLC变量链接
- vue打包生成zip压缩包
- 罗技F710手柄使用教程-ROS
- BFC以及清除浮动四种方式
- 安卓百度地图之定位图标在地图上显示
- 百度地图https访问方式
- ubuntu20.04安装思维导图软件MindMaster、XMind
- 如何在Salesforce Lightning组件中创建模态/弹出框
热门文章
- 树线段hdu 4508 美素数(线段树)
- 晓月antivirV8P绿色汉化扫描自由版
- Sql语句分页,有待优化
- 初学 python 之 HAproxy配置文件操作
- ios网络编程(二)之网络连接
- Mybatis与hibernate
- 替换过的mysql能找回来_MySQL 误操作后数据恢复(update,delete忘加where条件)
- linux 动态输出函数名,控制linux动态链接库导出函数
- 拓端tecdat|使用R语言进行多项式回归、非线性回归模型曲线拟合
- android碎片按钮,Android 碎片学习 之 如何在碎片调用Activity中的方法来进行赋值操作...