赞
踩
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后报错
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。