❤️💕💕数据库的高级指南,如何在 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;
- 原子性:事务不可再分,要么同时成功,要么同时失败
- 一致性:事务完成后,必须使所有的数据保持一致状态
- 隔离性:多个事务之间, 操作的可见性
- 持久性:事务一旦提交或者回滚,它对数据库中的数据的改变是永久的