mysql的事务处理主要有两种方法
1、用begin,rollback,commit来实现
begin; -- 开始一个事务
rollback; -- 事务回滚
commit; -- 事务提交
2、直接用set来改变mysql的自动提交模式
mysql默认是自动提交的,也就是你提交一个sql,它就直接执行!我们可以通过
-- 查看是否自动提交
show variables like 'autocommit';
set autocommit=0; -- 关闭自动提交
set autocommit=1; -- 开启自动提交
但注意当“关闭自动提交”的时候,提交的SQL都将做为事务处理,直到用commit或rollback结束,
注意当结束这个事务的同时也开启了个新的事务!按第一种方法只将当前的作为一个事务!个人推荐使用第一种方法!
新建会话1加排它锁
begin;
select * from tableA where id = 1 for update;
新建会话2更新,这时会话2会阻塞。待会话1执行commit或rollback后,会话2才会继续执行。
begin;
update tableA set value='test' where id = 1;
若会话1的事务一直没提交,在等待52s后报错