实现一个用户取过的数据不被其他用户取到

实现一个用户取过的数据不被其他用户取到:

  问题:

  在用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.mzph.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、在超越公共汽车时,注意提防公共汽车起步后突然向左转…