乙個幻象讀的例子

2021-08-25 17:48:48 字數 406 閱讀 3121

近期工作中遇到乙個bug報重複提交會生成兩條同樣的記錄。因為這種資料的乙個欄位在一定範圍內不允許重名(並不是全表資料不允許重名因此這個字段沒有unique約束),所以每次儲存記錄時會先檢查有沒有重名,如果沒有重名才會儲存。但是在重複提交過程中若操作間隔足夠短就會出現以下情況:

第乙個事務首先查詢,結果沒有重名,接著第二個事務也開始查詢,結果也沒有重名,然後第乙個事務插入資料並提交,接著第二個事務也將同樣乙份資料插入,因為沒有unique約束,因此也插入成功。假設第二個事務在提交之前再查詢是否有重名就會發現已經存在重名了,這樣第一次查詢就是典型的「幻象讀」。幻象讀的標準描述如下:

杜絕幻象讀必須使用最高的隔離級別,即事務序列化。

note:如無特別設定,程式總是使用資料庫的預設隔離級別。mysql的預設級別是第**:repeatable-read。

乙個最簡單的寫檔案和乙個讀檔案的例子

以下為兩個按鈕的響應函式 void cbdlg onbutton1 todo add your control notification handler code here cfile file1 cstring fnstr fnstr c 1.txt file1.open fnstr,cfile ...

乙個struts spring的例子

第乙個struts spring的例子 呵呵剛學spring 寫還望各位大蝦指教!配置struts就不用說了吧,如果用myeclipse直接add一下就可以了.接下來就來配置讓它支援spring 可 一,新建專案後,開啟struts confing.xml在後面加人下面 簡單吧!二然後就開始寫我們的...

乙個sql的例子

select dbo.userinfo.username,dbo.userinfo.usertruename,dbo.userinfo.useremail,dbo.userinfo.usermobile,dbo.userinfo.usertelephone,dbo.userinfo.usercar,...