MySQL的事务操作主要有以下三种:
注意: 我们的每次增删改操作其实也有事务,只是MySQL默认开启的自动提交事务,所以我们每次执行sql的时候是MySQL自动帮我们提交了事务,因此要想手动控制事务,则必须关闭MySQL的事务自动提交。在MySQL中直接用set来改变自动提交模式 set autocommin = 0 关闭自动提交事务;set autocommin = 1 开启自动提交事务;
模拟简单银行转账
#前置准备 创建账户表 create table account( id int primary key, name varchar(20), --账户名 money double --金额 ); #插入数据 insert into account values(1,'zhangsan',1000),(2,'lisi',1000); #设置MySQL事务为手动提交 set autocommit= 0; #检查一下autocommit是否设置成功为手动提交 select @@autocommit; #开启事务 begin; #模拟账户转账 update account set money = money - 200 where name = 'zhangsan'; update account set money = money + 200 where name = 'lisi'; #提交事务 commit; #回滚事务 rollback;
隔离级别,顾名思义就是将事务与另一个事务隔离开,至于为什么要隔离呢?是因为如果一个事务正在操作的数据被另一个事务修改或删除了,那么最后的执行结果可能无法达到预期,如果没有隔离性还会导致其他问题。
操作:
#查看隔离级别 show variables like '%isolation%'; #设置隔离级别 set session transaction isolation level read uncommitted;--设置读未提交数据 set session transaction isolation level read committed;--设置读已提交数据 set session transaction isolation level repeatable read;--可重复读 set session transaction isolation level serializable;--串行化