


set @@autocommit = 0;
select * from acount where name = '嘉宝' && acount.money >= 1000;
update acount set money = money - 1000 where name = '嘉宝';
update acount set money = money + 1000 where name = '煎包';
commit ;


脏读;当有两个事务使用同一数据库时,一个事务读取到另一个事务未commit的数据,使用read commited 能规避脏读(得另一个事务提交才可以)
不可重复读:当两个事务使用同一数据库时,一个事务读取另一个事务未提交前后的数据不一样,则为不可重复读,用repeated commited可以规避(得本事务提交才可以)
幻读:当两个事务使用同一事务时,一个事务在查某数据时没有,同时另一个事务提交了插入该数据的语句,则事务插入时会提示已存在,而查找时就不存在,使用Serializable可规避(当在查时阻塞对其的操作,提交才能继续)
文章讨论了数据库事务中的三种异常情况:脏读、不可重复读和幻读,以及如何通过设置不同的事务隔离级别(如readcommitted,repeatedcommitted,Serializable)来避免这些问题。在多事务环境中,这些概念对于数据一致性至关重要。
1639

被折叠的 条评论
为什么被折叠?



