Skip to content

Latest commit

 

History

History
129 lines (82 loc) · 2.63 KB

File metadata and controls

129 lines (82 loc) · 2.63 KB

第8节 事务

❤️💕💕数据库的高级指南,如何在 MySQL、SQL Server、MS Access、Oracle、Sybase、Informix、Postgres 和其他数据库系统中使用 SQL,如何从头实现一个数据库系统,我们开始吧!Myblog:http://nsddd.top


[TOC]

事务

数据库的事务是一种机制,是一种操作序列,包含了一组数据库的操作命令

事务把所有的命令作为一个整体向系统提交或者撤销操作请求,即这一组数据库命令要么同时成功,要么同时失败

事务是一个不可分割的工作逻辑单元。

很容易理解嘛,银行转账,肯定不可能一个人转过去了,一个人没收到…

那钱呢????? ⚒️银行吞了嘛

事务的基本操作

1. 开启事务

start transaction;
# 或者 begin;

2. 回滚事务(出现异常)

rollback;

3. 提交事务

commit;

案例

drop table if exists account;

# 创建账户表
create table account (
id int primary key auto_increment,
name varchar(10),
money double(100)
);

# 添加数据
insert into account(name,money) value("张三",1000),("李四",1000)
select * form account;

这个我们可以同时转账操作

查询李四余额

李四金额 –500

update account set money = money - 500 where name = "李四"

张三余额 +500

update account set money = money + 500 where name = "张三"
drop table if exists account2;

# 创建账户表
create table account2 (
id int primary key auto_increment,
name varchar(10),
money double(10,2)
);

# 添加数据
insert into account2(name,money) value("张三",1000),("李四",1000)
select * form account;

# 转账操作
# 开启事务  -- 下面的操作都是临时性的操作:在其他的用户窗口没办法查询到
begin;
update account set money = money - 500 where name = "李四"
update account set money = money + 500 where name = "张三"

# 回滚事务
rollback;

事务的特性

  • 原子性:事务不可再分,要么同时成功,要么同时失败
  • 一致性:事务完成后,必须使所有的数据保持一致状态
  • 隔离性:多个事务之间, 操作的可见性
  • 持久性:事务一旦提交或者回滚,它对数据库中的数据的改变是永久的

END 链接