事务的特性和简介

1.原子性:要么都成功,要么都失败
2.一致性:事务前后的数据完整性要保证一致
3.持久性:事务一旦提交则不可逆,被持久到数据库中
4.隔离性:多个用户并发访问数据库时,数据库为每一个用户开启事务,不能被其他事务的操作所干扰,事务之间相互隔离

事务不隔离会导致的问题:
脏读:一个事务读取到另外一个事务未提交的数据
不可重复读:一个事务读取表中某一行数据,但每次读取的结果不同。(不一定是错误,需要根据场景分析)
虚读(幻读):一个事务内读取到别的事务插入的数据,导致前后读取不一致

示例代码:

set autocommmit = 0; --关闭自动提交
start transaction -- 开启一个事务

update acount set money=money-500 where `name` = A; -- A减少500
update acount set money=money+500 where `name` = B; -- B增加500

rollback; -- 回滚(如果没有commit,则可以回滚,如果commit了,不能回滚)
commit; --提交事务,就持久化

set autocommit = 1; -- 恢复自动提交
posted @ 2023-06-02 17:37  遥遥领先  阅读(4)  评论(0编辑  收藏  举报