lock(true) 鎖機制的使用

再一個系列同時操做多種表的話 最好是用事務, 這樣不容易出錯web

數據庫類型要是InnoDB,數據庫

加鎖必須跟事務同時使用,this

查詢的時候都必須帶鎖,spa

好比: $user_mod->lock(true)->where('id=1')->select();orm

這個地方用鎖查詢,若是查詢這個user對象須要防止同時操做的話也要進行加鎖,就是也要用lock(true)這種方式查詢對象

 

  1.  M()->startTrans();//開啓事務
  2.         $map['userid']='test';//查詢條件
  3.         $user = M('User')->lock(true)->where($map)->find();//加鎖查詢
  4.         if($user)
  5.         {
  6.             //執行你想進行的操做, 最後返回操做結果 result
  7.             $result = true;
  8.             if(!$result)
  9.             {
  10.                 M()->rollback();//回滾
  11.                 $this->error('錯誤提示');
  12.             }
  13.         }
  14.         M()->commit();//事務提交
  15. 加上lock(true)的實際就是在查詢語句最後加上 for update
  16.         $this->success('成功提示');
相關文章
相關標籤/搜索