1. 程式人生 > >thinkphp中如何使用鎖的功能,如何使用類似於mysql的for update功能?

thinkphp中如何使用鎖的功能,如何使用類似於mysql的for update功能?

Thinkphp的加鎖功能,我下面詳細說一下: 
  首先,資料庫型別要是InnoDB,其次,加鎖必須跟事務同時使用,還有,查詢的時候都必須帶鎖,比如: $user_mod->lock(true)->where(‘id=1’)->select();這個地方用鎖查詢,其次地方如果查詢這個user物件需要防止同時操作的話也要進行加鎖,就是也要用lock(true)這種方式查詢: 
程式碼示例如下:

        M()->startTrans();//開啟事務
        $map['userid']='666';//查詢條件
        $user = M('User')->lock(true)->where($map)->find();//加鎖查詢
        if($user)
        {
            //執行你想進行的操作, 最後返回操作結果 result
            $result = true;
            if(!$result)
            {
                M()->rollback();//回滾
                $this->error('錯誤提示');
            }
        }
        M()->commit();//事務提交
        $this->success('成功提示');

加上lock(true)的實際就是在查詢語句最後加上 for update,可以用如下這種方法測試,開兩個視窗,一個視窗開啟事務,然後查詢加鎖一條資料,另一個視窗再次查詢加鎖這條資料,你會發現另一個視窗的查詢會一直等待,直到第一個視窗的事務提交。如圖:

最後,希望能幫助到大家!

相關推薦

釘釘e應用的插槽功能類似element-ui 的slot功能點選某個按鈕輸出所在列表項的資料

定義data屬性,data-obj="{{item}}" <view data-obj="{{item}}" catchTap="onHasQuiz">隨堂考試</view> 用e接收,console輸出看 onHasQuiz(e) { console.l

c/cpp如何分割字串類似split的功能

在python中,如果要求當前時間的unix時間戳,我特別喜歡這麼用: import time timestr = time.time() timestamp = int(timestr.split('.')[0]) 這裡的split函式,我非常喜歡,在java、c#和

leetcode676+修改一個字母在vector的dict有沒有類似字典樹暴力

https://leetcode.com/problems/implement-magic-dictionary/description/ class MagicDictionary { public: set<string> s; /** Initialize

淺析在QtWidget自定義Model(beginInsertRows()和endInsertRows()是空架子類似一種信號用來通知底層)

cti ron 初學者 開發 http 沒有 insert ati 學習 Qt 4推出了一組新的item view類,它們使用model/view結構來管理數據與表示層的關系。這種結構帶來的功能上的分離給了開發人員更大的彈性來定制數據項的表示,它也提供一個標準的model接

mysql下分組取關聯表指定提示方法類似mssql的cross apply

nbsp cts ont font ack you 方法 sta lease 轉至:https://stackoverflow.com/questions/12113699/get-top-n-records-for-each-group-of-grouped-result

【kotlin】基本語法when的使用類似java的switch,但是又青出於藍而勝

href .com log 事情 IT 使用 基本語法 kotlin 參數 when(要判斷的參數){   參數值為1  ->做這種事情   參數值為2  ->做另一種事情   else  ->  類似於switch中的default } 擴展使用:ht

python多執行緒開啟的兩種方式(內含有event的應用即安全的機制類似java的等待喚醒機制不會出現多個執行緒之間的錯亂問題)

 event是類似於java中的等待喚醒機制,具體方法參照上一篇CSDN 下面來介紹開啟執行緒的第一種方式 #Filename:threading1.py #開啟執行緒的第一種方式 import threading import time event=threadin

關於mybatis根據傳進來的引數執行不同的語句類似java的if~else~語句

1、在一個方法中根據條件執行兩個不同的查詢語句,例如下面的查詢穿進來的引數為admin時執行第一個查詢語句,否則就執行下面查詢語句 dao類中的方法 public List<Caidan> getcaidan(@Param(value="czyid") Stri

AndroidApplication類用法(整個程式的全域性變數即單例)類似session

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.test"

Android 開啟手機QQ實現類似客服功能

專案中,遇到一個小問題,在此記錄一下,就是實現客服的功能。由於專案並沒有整合 IM 模組,所以利用手機QQ,實現客服功能!! 實現比較簡單: /** * 判斷 使用者是否安裝QQ客戶端 */ public static boolean isQQC

vs2013/2015scanf函數類似error C4996: 'scanf': This function or variable may be unsafe的安全檢查錯誤

span 調試 ria 安全性 init 點擊 scan online pan   在使用vs2015時,遇到了scnaf函數安全性的問題,程序不能正常運行,錯誤如下: error C4996: ‘scanf‘: This function or variable may

pandas的篩選功能跟excel的篩選功能類似但是功能更強大。

list stack indexing 一個 loop excel data creat imp   Select rows from a DataFrame based on values in a column -pandas 篩選    https://stackov

PHPExcel在Thinkphp的使用列寬度可定義

namespace app\admin\controller; ###引入檔案 class EvaluateController extends Controller { /** * 匯出使用者評價到excel */ public function dumpLog

android實現本地視訊的播放類似一個小型的MP4可以選擇本地的檔案進行播放

首先呢我們來 看一下佈局檔案中的程式碼: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

shell花括號3個小於號功能

針對不同的變數狀態賦值(沒設定、空值、非空值): file−my.file.txt:若{file-my.file.txt}: 若file−my.file.txt:若file沒有設定,則使用my.file.txt作返回值。(空值及非空值時不作處理) file:−my.file.txt:若{file:-my.fi

開源庫【FreeRadioGroup】--淡出、自由拖動、自動貼邊類似蘋果的虛擬輔助按鈕

*本篇文章已授權微信公眾號 guolin_blog (郭霖)獨家釋出 *本篇文章已授權微信公眾號 guolin_blog (郭霖)獨家釋出 *本篇文章已授權微信公眾號 guolin_blog (郭霖)獨家釋出 demo演示 簡單描述 這個

Android實現背景透明度漸變的效果類似分享底部的彈出框

實現背景透明度漸變的效果,類似於分享底部的彈出框 這是公司最近寫的一個專案,其中的一個自定義分享模組,剛開始實現的效果比較簡單,背景透明度沒有漸變,而是隨著底部分享的彈出框而一起彈出,看起來比較生硬,使用者體驗不是很好,現在要實現的效果就是類似於SharedS

MyEclipse選單欄的Search瀏覽器上的F12功能

在編碼過程中,有些識別符號在有些檔案中只出現了一次(比如js中),自己不清楚框架原理或者說不清楚這個識別符號在哪裡定義等,這時候我們應該怎麼找到這個識別符號的起始位置。我們可以通過MyEclipse中選單欄Search條目來在整個專案中的某一類檔案中搜索(比如*.jsp)。

Android -- 固定在ScrollView頂部的View類似新浪微博的評論列表的頂部

現在很多App都實現了這個功能,例如新浪微博評論頁面的評論、轉發、讚的數字可以固定在螢幕上方。我個人很喜歡這種設計,所以利用一點空餘時間簡單實現了一個類似的功能。 先來看一下上面這張圖的效果。 這個是新浪微博的一個頁面,整體佈局大致分了三塊:正文內容、轉發評論贊的