mysql事务测试

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;

mysql事务测试_第1张图片


新建会话2更新,这时会话2会阻塞。待会话1执行commit或rollback后,会话2才会继续执行。

begin;
update tableA set value='test' where id = 1;

若会话1的事务一直没提交,在等待52s后报错

mysql事务测试_第2张图片

你可能感兴趣的:(mysql,数据库,事务)