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; -- 恢复自动提交
标签:事务,set,读取,--,简介,特性,money,500
From: https://www.cnblogs.com/wwwgo/p/17451438.html