再一個系列同時操作多種表的話 最好是用事務, 這樣不容易出錯
數據庫類型要是InnoDB,
加鎖必須跟事務同時使用,
查詢的時候都必須帶鎖,
比如: $user_mod->lock(true)->where('id=1')->select();
這個地方用鎖查詢,如果查詢這個user對象需要防止同時操作的話也要進行加鎖,就是也要用lock(true)這種方式查詢
- M()->startTrans();//開啟事務
- $map['userid']='test';//查詢條件
- $user = M('User')->lock(true)->where($map)->find();//加鎖查詢
- if($user)
- {
- //執行你想進行的操作, 最后返回操作結果 result
- $result = true;
- if(!$result)
- {
- M()->rollback();//回滾
- $this->error('錯誤提示');
- }
- }
- M()->commit();//事務提交
- 加上lock(true)的實際就是在查詢語句最后加上 for update
- $this->success('成功提示');