TP5框架下数据库锁的使用 官方介绍数据库锁的文档 https://www.kancloud.cn/manual/thinkphp5_1/354018 其中 > 5.1框架不支持乐观锁,需要自己扩展,6.0版本自带乐观锁功能 这里加上一点自己的理解 **首先锁都是配合事务一起使用的** 如有一个商品表,只有一个库存了,每次查询后都需要锁住表,等待执行下单修改库存后再释放,防止同一时间多人锁定同一库存 ```php # 示例 Db::startTrans(); try { //查询商品 $vo = Db::name('goods')->where('id',$param['id'])->where('sale_status', 1)->lock(true)->find(); if(empty($vo)){ return ajaxReturn(-1, "商品不存在或已下架"); } //业务处理,判断库存 ... //扣除库存 Db::name('goods')->where('stock','>',0)->where(...)->setDecO('stock',1); Db::commit(); return ajaxReturn(0, 'success', ['id' => $model->id]); } catch (\Exception $e) { Db::rollback(); return ajaxReturn(-1, '系统繁忙' . $e->getMessage()); } ```