国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

實(shí)現(xiàn)一個(gè)用戶取過(guò)的數(shù)據(jù)不被其他用戶取到

2024-07-21 02:42:01
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
實(shí)現(xiàn)一個(gè)用戶取過(guò)的數(shù)據(jù)不被其他用戶取到:

問(wèn)題:

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

解決方法:

處理此類問(wèn)題的一般方法是增加一個(gè)標(biāo)志列,每個(gè)用戶取的記錄設(shè)置一個(gè)標(biāo)志,新的用戶只從標(biāo)志為未取的記錄中獲取記錄。

在本文中將會(huì)利用事務(wù)與鎖來(lái)控制數(shù)據(jù)的處理,不需要增加任何標(biāo)志列。

解決的具體示例:

1.建立測(cè)試環(huán)境

USE tempdbGO CREATE TABLE dbo.tb(id int identity(1, 1), name nvarchar(128)) INSERT tb(name)SELECT TOP 100 nameFROM syscolumnsGO

2.模擬第1個(gè)用戶

-- 查詢窗口發(fā)出下面的查詢語(yǔ)句BEGIN TRAN-- 事務(wù)不提交或者回滾, 以保持鎖不釋放SET ROWCOUNT 20SELECT * FROM tb WITH(UPDLOCK, READPAST)-- UPDLOCK 讓鎖保留到事務(wù)結(jié)束, READPAST 跳過(guò)已經(jīng)鎖定的數(shù)據(jù)

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

-- 查詢窗口發(fā)出下面的查詢語(yǔ)句BEGIN TRAN-- 事務(wù)不提交或者回滾, 以保持鎖不釋放SET ROWCOUNT 20SELECT * FROM tb WITH(UPDLOCK, READPAST)-- UPDLOCK 讓鎖保留到事務(wù)結(jié)束, READPAST 跳過(guò)已經(jīng)鎖定的數(shù)據(jù)

4.結(jié)果

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

此時(shí)就實(shí)現(xiàn)了不同的用戶取不同數(shù)據(jù)的需求.

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


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 萝北县| 南靖县| 湖口县| 惠来县| 和静县| 汶上县| 古田县| 金坛市| 屏山县| 含山县| 张家川| 滨州市| 洛川县| 曲沃县| 南安市| 米脂县| 莱西市| 灯塔市| 丽江市| 仙游县| 商丘市| 藁城市| 洞头县| 万盛区| 大城县| 长寿区| 邓州市| 德保县| 岳池县| 焦作市| 孟村| 额尔古纳市| 黔南| 金塔县| 天气| 竹溪县| 辉县市| 灵山县| 鲜城| 河北省| 甘肃省|