實現一個用戶取過的數據不被其他用戶取到

實現一個用戶取過的數據不被其他用戶取到:

  問題:

  在用ADO訪問數據庫時,從一個表中取一定的記錄(比如20行),取出后在程序中使用,使用完后刪除掉記錄(不用更新或刪除記錄)。在多用戶操作下(每個用戶采用相同的操作),如何保證一個用戶已選取的記錄不被其他用戶選取?

  解決方法:

  處理此類問題的一般方法是增加一個標志列,每個用戶取的記錄設置一個標志,新的用戶只從標志為未取的記錄中獲取記錄。

  在本文中將會利用事務與鎖來控制數據的處理,不需要增加任何標志列。

  解決的具體示例:

  1.建立測試環境

USE tempdbGOCREATE TABLE dbo.tb(id int identity(1, 1), name nvarchar(128))INSERT tb(name)SELECT TOP 100 nameFROM syscolumnsGO
  2.模擬第1個用戶

-- 查詢窗口發出下面的查詢語句BEGIN TRAN-- 事務不提交或者回滾, 以保持鎖不釋放SET ROWCOUNT 20SELECT * FROM tb WITH(UPDLOCK, READPAST)-- UPDLOCK 讓鎖保留到事務結束, READPAST 跳過已經鎖定的數據

  3. 模擬第2個用戶(語句與第1個用戶一樣,只是在另一個連接中執行)

-- 查詢窗口發出下面的查詢語句BEGIN TRAN-- 事務不提交或者回滾, 以保持鎖不釋放SET ROWCOUNT 20SELECT * FROM tb WITH(UPDLOCK, READPAST)-- UPDLOCK 讓鎖保留到事務結束, READPAST 跳過已經鎖定的數據

  4.結果

  大家可以看到:查詢窗口1列出了前20條數據,查詢窗口1列出了21-40條數據。

  此時就實現了不同的用戶取不同數據的需求.

  注釋::在 處理完成后, 刪除記錄, 然后提交事務就可以了。

轉載于:https://www.cnblogs.com/gooddasenlin/archive/2011/05/27/2059684.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448341.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448341.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448341.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Docker 鏡像 重命名

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1. 鏡像改名命令格式: # 命令格式:docker tag 鏡像id 倉庫:標簽或:docker tag 舊鏡…

STL之deque和其他容器

deque簡介 deque是“double-ended queue”的縮寫,和vector一樣都是STL的容器,deque是雙端數組,而vector是單端的。 deque在接口上和vector非常相似,在許多操作的地方可以直接替換。 deque可以隨機存取元素(支持索引…

Java藍橋杯02——第二題集錦:生日蠟燭、星期一、方格計數、猴子分香蕉

第二題 生日蠟燭(結果填空) 某君從某年開始每年都舉辦一次生日party,并且每次都要吹熄與年齡相同根數的蠟燭。 現在算起來,他一共吹熄了236根蠟燭。 請問,他從多少歲開始過生日party的? 請填寫他開始過生日party的年齡數。 注意&a…

夜考

夜考內容 夜考主要考察夜間汽車燈的使用。上車前準備 1、向考官報告 2、繞車一周觀察車輛狀況 3、觀察車前道路上是否有障礙 4、觀察后方是否有來車 注意事項 1、發動車輛時,記得打開車燈; 2、會車時,距來車150米左右,使用近光燈;…

解決:Error response from daemon: Get https://index.docker.io/v1/search?q=openjdkn=25: dial tcp: looku

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1. 我只是想查一個 mysql 鏡像。執行命令: docker search mysql 。報錯如下: Error response from daemon…

STL之set

set簡介 set是一個集合容器,其中所包含的元素是唯一的,集合中的元素按一定的順序排列。元素插入過程是按排序規則插入,所以不能指定插入位置。 set采用紅黑樹變體的數據結構實現,紅黑樹屬于平衡二叉樹。在插入操作和刪除操作上比…

大三了,計算機專業學生的困惑。 [轉]

我現在已經大三了覺得進大學里職業或是學習必須要有一個很好的規劃要不然真的會浪費很多時間在一些無謂的事情上自己需要有個明確的目標,否則真的會錯失方向我知道不要太浮躁,很容易被一些表面上的東西誘惑。有師長建議時說:我今年畢業&#…

夜間行駛

夜間行駛的特點 特點是視線差,而且駕駛者容易被對面來車大燈晃的眩目,眼前一片漆黑,而造成操作失當。注意事項 1、會車時應注意減速,觀察前方與兩側情況,關閉遠光燈; 2、進出主路先看車燈; 3、掌握安全車速&…

解決: /bin/sh: 1: java: not found

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1. 情況描述: 我自己寫 dockerfile , buid 了一個鏡像,接下來就想后臺方式 run 一個容器, docke…

STL之map和multimap容器

1.簡介 map是標準的關聯式容器,一個map是一個鍵值對序列,即(key,value)對。它提供基于key的快速檢索能力。map中key值是唯一的。集合中的元素按一定的順序排列。元素插入過程是按排序規則插入,所以不能指定插入位置。map的具體實現采用紅黑樹…

移動APP接口安全性設計

移動APP接口是怎么保證安全性的,可以采用https,或者是非對稱加密。 接口加密的目的是防止被別人用抓包工具,抓包后篡改數據。 關于加密算法常見的有對稱加密(DES)和非對稱加密(RSA) 對稱加密&am…

掉頭

掉頭技巧 掉頭前打左燈、減速(至五公里左右)甚至停下,注意觀察路況,同時密切注意來往車輛情況(尤其是遠一點但車速快的),必要時停車等待。操作方法 1、在較寬廣的道路上,應盡量地應用大遇回一次順車掉頭。如在有交通指揮人…

深入理解 Git 的實現原理

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 我一直很佩服能靜心細讀各種官方文檔的人,此文轉自:https://www.cnblogs.com/mamingqian/p/9711975.html 原作者…

STL之容器小結

一、理論提高:所有容器提供的都是值(value)語意,而非引用(reference)語意。容器執行插入元素的操作時,內部實施拷貝動作。所以STL容器內存儲的元素必須能夠被拷貝(必須提供拷貝構造函…

超車

概念 超車,即車輛經過另一輛車的側面,從后面超過前面同方向行駛的車輛。用于超車的車道一般為內側車道,即較接近道路中心而離路肩較遠的車道。在靠右行駛的地區,超車道為靠左的車道;在靠左行駛的地區,超車道為靠右的…

STL之函數對象和謂詞

1.函數對象 重載函數調用操作符的類,其對象常稱為函數對象(function object),即它們是行為類似函數的對象。一個類對象,表現出一個函數的特征,就是通過“對象名(參數列表)”的方式使用一個類對象&#xff…

安裝 Git ( Windows、linux、Mac)

安裝 Git 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 是時候動手嘗試下 Git 了,不過得先安裝好它。有許多種安裝方式,主要分為兩種,一種是通過編…

會車

概念 會車,即反向行駛的列車、汽車等同時在某一地點交錯通過。 會車攻略 一看,看對向來車的車型、速度和裝載情況,前方道路的寬度、堅實情況,路旁行人、車輛情況,路旁停車以及障礙物情況等; 二算,…

FormsAuthenticationTicket基于forms的驗證

構建基于forms的驗證機制過程如下: 1,設置IIS為可匿名訪問和asp.net web.config中設置為form驗證 2,檢索數據存儲驗證用戶,并檢索角色(如果不是基于角色可不用) 3,使用FormsAuthenticationTicket創建一個Cookie并回發到客戶端,并存儲 角色到票…

通過公共汽車站

要求 通過班車站,應降低速度慢行,掛一擋通過,注意左右仔細查看。操作方法 1、減速慢行,注意觀察公共汽車周圍的交通情況,以防突然情況的出現; 2、在超越公共汽車時,注意提防公共汽車起步后突然向左轉…