TP6中for update和lock in share mode用法

浏览:115 发布日期:2021/11/17 分类:ThinkPHP6专区 关键字: lock(true) share mode thinkphp6
1.锁定进程如果采用的是lock(true),在该进程执行过程中(未完成),有任何其他更新操作都是无效的,直到锁定进程完成后才可继续执行。
2.锁定进程如果采用的是lock( 'lock in share mode'),在该进程执行过程中(未完成),有任何其他更新操作都是无效的、直到锁定进程完成后依然会报错锁定更新。   /**
     * 锁定测试
     */
    public function lock(){
        set_time_limit(0);
        //开启事务
        Db::startTrans();
        try{
            //查询时锁定 关键行(该行不能再被其他修改) 'lock in share mode'
            $rs = Member::where("username = 'veitool'")->lock(true)->find();
            sleep(10);
            Db::name('member')->where("username = 'veitool'")->update(['money' => '10']);
            //提交事务
            Db::commit();
            return '成功!';
        }catch(\Exception $e){
            //回滚事务
            Db::rollback();
            return '失败:'.$e;
        }
    }
    
   /**
     * 其他更新
     */
    public function locks(){
        set_time_limit(0);
        //$rs = Member::where("username = 'veitool'")->lock(true)->find();
        Db::name('member')->where("username = 'veitool'")->inc('money', 8.60)->update();
        return '成功!';
    }
最佳答案
评论( 相关
后面还有条评论,点击查看>>