SQLServer乐观锁定和悲观锁定实例

本文使用一个实例来说明如何使用乐观锁定和悲观锁定来解决多用户并发的环境里,其他用户已经把你要修改的数据进行了修改而造成数据的不一致的问题。

在实际的多用户并发访问的生产环境里边,我们经常要尽可能的保持数据的一致性。而其中最典型的例子就是我们从表里边读取数据,检查验证后对数据进行修改,然后写回到数据库中。在读取和写入的过程中,如果在多用户并发的环境里边,其他用户已经把你要修改的数据进行了修改是非常有可能发生的情况,这样就造成了数据的不一致性。解决这样的办法,SQL SERVER提出了乐观锁定和悲观锁定的概念,下边我以一个实例来说明如何使用乐观锁定和悲观锁定来解决这样的问题。

/*建立测试表:Card,代表一个真实的卡库,供用户注册。用户要从里边选出一个未使用的卡,也就是F_Flag=0的卡,给用户注册:更新F_Name,F_Time,F_Flag字段。如果出现两个用户同时更新一张卡的情况,是不能容忍的,也就是我们所说的数据不一致行。*/

create table Card(F_CardNO varchar(20),F_Name varchar(20),F_Flag bit,F_Time datetime)
Go
insert Card(F_CardNo,F_Flag) select '1111-1111',0
insert Card(F_CardNo,F_Flag) select '1111-1112',0
insert Card(F_CardNo,F_Flag) select '1111-1113',0
insert Card(F_CardNo,F_Flag) select '1111-1114',0
insert Card(F_CardNo,F_Flag) select '1111-1115',0
insert Card(F_CardNo,F_Flag) select '1111-1116',0
insert Card(F_CardNo,F_Flag) select '1111-1117',0
insert Card(F_CardNo,F_Flag) select '1111-1118',0
insert Card(F_CardNo,F_Flag) select '1111-1119',0
insert Card(F_CardNo,F_Flag) select '1111-1110',0
Go


-- 下边是我们经常使用的更新方案如下:

时间: 2024-10-04 00:53:38

SQLServer乐观锁定和悲观锁定实例的相关文章

推荐:SQL 乐观锁定和悲观锁定使用实例

sql 在实际的多用户并发访问的生产环境里边,我们经常要尽可能的保持数据的一致性.而其中最典型的例子就是我们从表里边读取数据,检查验证后对数据进行修改,然后写回到数据库中.在读取和写入的过程中,如果在多用户并发的环境里边,其他用户已经把你要修改的数据进行了修改是非常有可能发生的情况,这样就造成了数据的不一致性.解决这样的办法,SQL SERVER提出了乐观锁定和悲观锁定的概念,下边我以一个实例来说明如何使用乐观锁定和悲观锁定来解决这样的问题. /* 建立测试表:Card,代表一个真实的卡库,供用

SQL SERVER乐观锁定和悲观锁定使用实例

server 在实际的多用户并发访问的生产环境里边,我们经常要尽可能的保持数据的一致性.而其中最典型的例子就是我们从表里边读取数据,检查验证后对数据进行修改,然后写回到数据库中.在读取和写入的过程中,如果在多用户并发的环境里边,其他用户已经把你要修改的数据进行了修改是非常有可能发生的情况,这样就造成了数据的不一致性.解决这样的办法,SQL SERVER提出了乐观锁定和悲观锁定的概念,下边我以一个实例来说明如何使用乐观锁定和悲观锁定来解决这样的问题. /* 建立测试表:Card,代表一个真实的卡库

乐观锁与悲观锁及应用举例

  最近因为在工作中需要,学习了乐观锁与悲观锁的相关知识,这里我通过这篇文章,把我自己对这两个"锁家"兄弟理解记录下来;       - 悲观锁:正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)的修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态.悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据).       以常用的m

深入理解Yii2.0乐观锁与悲观锁的原理与使用

本文介绍了深入理解Yii2.0乐观锁与悲观锁的原理与使用,分享给大家,具体如下: Web应用往往面临多用户环境,这种情况下的并发写入控制, 几乎成为每个开发人员都必须掌握的一项技能. 在并发环境下,有可能会出现脏读(Dirty Read).不可重复读(Unrepeatable Read). 幻读(Phantom Read).更新丢失(Lost update)等情况.具体的表现可以自行搜索. 为了应对这些问题,主流数据库都提供了锁机制,并引入了事务隔离级别的概念. 这里我们都不作解释了,拿这些关键

Windows 8在桌面上总是显示大小写锁定和数字锁定图标

Windows 8 发布预览版 ThinkPad及部分Lenovo V480 V580 Lenovo B480 B580 昭阳K49 E49等商务机型 知识点分析: 取消屏幕上显示的 Caps Lock 以及 Num Lock 切换时的提示图标. 操作步骤: 没有 Caps Lock 和 Num Lock 指示灯的笔记本,切换时会在桌面上显示大小写锁定和数字锁定图标.如图: 解决方法: 1.在桌面空白处上点击鼠标右键,在弹出菜单中选择"屏幕分辨率".如下图所示: 2.在弹出窗口中,点击

Windows 7在桌面上总是显示大小写锁定和数字锁定图标如何设置

在桌面上总是显示大小写锁定和数字锁定图标,如图: 操作步骤: 1. 右键点击桌面空白处,选择"屏幕分辨率"; 2. 选择"高级设置"; 3. 选择"屏幕显示"选项卡; 4. 在此选项卡中能够看到有一个"数字锁定和大小写锁定的指示符设置",可以自由选择大小写和数字锁定的图标是否始终显示在屏幕上. 备注: 在有大小写和数字键指示灯的机型中,"屏幕显示"中是没有 "数字锁定和大小写锁定的指示符设置&qu

数字锁定和大小写锁定的指示符设置教程

小编用的电脑是thinkpad,操作系统是64位的win7.以前输入大写字母时,显示屏上总会有提示,现在输入时不提示是是否是大写字母了.搞得我输入密码时很不适应,在桌面上总是显示大小写锁定和数字锁定图标.如图 解决方法: 1.右键点击桌面空白处,选择"屏幕分辨率". 2.选择"高级设置" 3.选择"屏幕显示"选项卡 4.在此选项卡中能够看到有一个"数字锁定和大小写锁定的指示符设置",可以自由选择大小写和数字锁定的图标是否始终显

Win8数字锁定和大小写锁定的指示符设置方法

  在Windows8系统下,与XP是有相当大的区别的,有很多刚刚由XP换成WIN8的同学总是不适应,就拿显示大小写锁定和数字锁定图标这个东西来说吧,就让很多人输入密码时很不适应,在桌面上总是显示大小写锁定和数字锁定图标.如图 解决方法: 1.右键点击桌面空白处,选择"屏幕分辨率". 2.选择"高级设置" 3.选择"屏幕显示"选项卡 4.在此选项卡中能够看到有一个"数字锁定和大小写锁定的指示符设置",可以自由选择大小写和数字锁

Win7数字锁定和大小写锁定的指示符设置图解

  小编用的电脑是thinkpad,操作系统是64位的win7.以前输入大写字母时,显示屏上总会有提示,现在输入时不提示是是否是大写字母了.搞得我输入密码时很不适应,在桌面上总是显示大小写锁定和数字锁定图标.如图 解决方法: 1.右键点击桌面空白处,选择"屏幕分辨率". 2.选择"高级设置" 3.选择"屏幕显示"选项卡 4.在此选项卡中能够看到有一个"数字锁定和大小写锁定的指示符设置",可以自由选择大小写和数字锁定的图标是否始