1、Mysql中的事务必须是InnoDB、Berkeley DB引擎,myisam不支持。
2、Mysql是不支持嵌套事务的,开启了一个事务的情况下,再开启一个事务,会隐式的提交上一个事务。
3、Mysql默认是autocommit=1,也就是说默认是立即提交,如果想开启事务,先设置autocommit=0,然后用START TRANSACTION、 COMMIT、 ROLLBACK来使用具体的事务。
4、 fastapp的事务嵌套,原理和代码都很简单,使用了一个trans_count的变量来标识当前事务的层级,默认为0,每次调用开启事务时计数器加1,事务提交或者回滚时,计数器减1。当计数器为0时,认为是最外层事务时实际触发mysql的事务操作。
5、 事务控制要成对出现,有开启,必有提交和回滚,如果不匹配导致事务计时器错误,偏离预期的控制效果
6、事务一般配合try catch异常处理语句一起实现,try包裹的语句体内,如果有错误,应该主动抛出异常,在catch内进行回滚操作,而不能直接在异常处回滚
有话要说