MySQL基础-事务

1.事务简介

2.事务操作

--转账操作(张三给李四转账1000)--正常情况
--1. 查询张三账户余额
select * from account where name = '张三';
--2. 将张三账户余额-1000
update account set money = money - 1000 where name = '张三';
--3. 将李四账户余额+1000
update account set money = money + 1000 where name = '李四';


--转账操作(张三给李四转账1000)--异常情况
--1. 查询张三账户余额
select * from account where name = '张三';
--2. 将张三账户余额-1000
update account set money = money - 1000 where name = '张三';
#添加错误
程序抛出异常
--3. 将李四账户余额+1000
update account set money = money + 1000 where name = '李四';
#执行之后就会出现错误,张三的钱扣除了1000,而李四的钱并没有加上1000

查看/设置事务提交方式

select @@autocommit;
#0表示手动提交,必须执行commit操作sql语句才会执行;默认是1,自动提交
set @@autocommit = 0;

提交事务

commit;

回滚事务

rollback;

添加事务:

--转账操作(张三给李四转账1000)
select @@autocommit;
set @@autocommit = 0;
--1. 查询张三账户余额
select * from account where name = '张三';
--2. 将张三账户余额-1000
update account set money = money - 1000 where name = '张三';
#添加错误
程序抛出异常
--3. 将李四账户余额+1000
update account set money = money + 1000 where name = '李四';
#正常情况
commit;
#出错之后
rollback;

开启事务

start transaction;

上述的添加事务还可以这样操作,不用手动设置@@autocommit为0

--转账操作(张三给李四转账1000)
start transaction
--1. 查询张三账户余额
select * from account where name = '张三';
--2. 将张三账户余额-1000
update account set money = money - 1000 where name = '张三';
#添加错误
程序抛出异常
--3. 将李四账户余额+1000
update account set money = money + 1000 where name = '李四';
#正常情况
commit;
#出错之后
rollback;

3.事务四大特性

在这里插入图片描述

并发事务问题:

在这里插入图片描述

在这里插入图片描述

4.事务隔离级别

在这里插入图片描述

在这里插入图片描述

注意:事务隔离级别越高,数据越安全,但是性能越低

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习两年半的Javaer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值