mysql 数据库事务主要是三个函数的结合使用:
beginTransaction() // 开始 commit() // 提交 rollBack() // 回滚
具体实例使用如下,创建一个订单并扣减库存,如果任何一步失败,就回滚(什么事都没发生)
$model = m('order'); $model->beginTransaction(); try { $data = array( 'user_id' => 'cleey', 'price' => 150.00, ); // 添加订单 $id = $model->insert($data); if (!$id) { throw new \Exception('add order err'); } // 扣减库存 $re = m('goods')->where(array('goods_id' => 1))->setDec('num', 1); if (!$re) { throw new \Exception('update goods num err'); } // 提交 $model->commit(); } catch (\Exception $e) { // 回滚 $model->rollBack(); $msg = $e->getMessage(); ajax(-1, $msg); // 返回错误信息 }