SQL--事务

SQL--事务

什么是事务?

事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败

默认MySQL的事务是自动提交的,也就是说,当执行一条DML语句,MySQL会立即隐式的提交事务。

转账操作(张三给李四转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='李四';

事务操作

image-20230822124338143

查询当前事务的提交方式

# 1为自动提交 0为手动提交
select @@autocommit;

设置事务为手动提交

# 设置为手动提交事务
set @@autocommit=0;

提交事务

commit;

回滚事务

# 回滚
rollback;

事务操作(二)

image-20230822124412996

# 方式2
# 对于当前来现在的每个语句都是一个事务
# 1 查询张三账户的余额
start group_replication ;
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;

事务的四大特性

image-20230822153511112

并发事务问题

多个并发事务出现的问题.

脏读

image-20230822154014212

不可重复读

image-20230822153943659

幻影

image-20230822154431651

posted @ 2023-08-22 15:45  harper886  阅读(30)  评论(0编辑  收藏  举报