SQL-事务

SQL-事务_第1张图片

 SQL-事务_第2张图片

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 ;

SQL-事务_第3张图片

SQL-事务_第4张图片

SQL-事务_第5张图片 

SQL-事务_第6张图片 

 

 脏读;当有两个事务使用同一数据库时,一个事务读取到另一个事务未commit的数据,使用read commited 能规避脏读(得另一个事务提交才可以)

不可重复读:当两个事务使用同一数据库时,一个事务读取另一个事务未提交前后的数据不一样,则为不可重复读,用repeated commited可以规避(得本事务提交才可以)

幻读:当两个事务使用同一事务时,一个事务在查某数据时没有,同时另一个事务提交了插入该数据的语句,则事务插入时会提示已存在,而查找时就不存在,使用Serializable可规避(当在查时阻塞对其的操作,提交才能继续)

你可能感兴趣的:(SQL基础,sql,java,数据库)