lock(true) 鎖機制的使用


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

數據庫類型要是InnoDB,

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

查詢的時候都必須帶鎖,

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

這個地方用鎖查詢,如果查詢這個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('成功提示');

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM