表级锁的使用
来源:互联网 发布:新浪财经数据下载 编辑:程序博客网 时间:2024/06/14 08:31
13.4.3 表级锁的使用
在SQL Server 2008中,用户对数据库中的数据表加锁后,其他用户不可以对数据表进行操作,直到该用户对数据表进行解锁操作后,其他用户才可以进行操作。
通过使用表级锁可以实现对数据表的锁定操作。常见的表级锁提示如下所示。
HOLDLOCK:该语句表示持有共享锁,直到整个事务完成。
ROWLOCK:该语句表示强制使用表锁、盘区锁和行锁代替页锁等。
NOLOCK:该语句执行时允许读"脏数据",但不发出共享锁。
PAGLOCK:该语句表示在使用一个表锁的地方使用多个页锁。
READPAST:使用该语句可以跳过任何锁定执行事务。
TABLOAKX:使用该语句可以强制使用独占表级锁。
UPDLOCK:该语句表示在事务结束之前,强制在读表时使用更新锁而不用共享锁。
下面通过实例讲解表级锁的使用方法。
【实例13-7】在"商品库存"数据表中使用HOLDLOCK表级锁。在SQL Server Management Studio中新建一个查询窗口,在该查询窗口中输入如代码13.7所示的代码;再次新建一个查询窗口,在窗口中输入如代码13.8所示的代码。
代码13.7
【执行代码】首先执行代码13.7,接着执行代码13.8。当执行代码13.7时,"商品信息"数据表在被锁定15秒之后解锁。在15秒之内,如果执行代码13.8,则可以用SELECT语句执行查询操作,但不可以执行DELETE语句删除数据,必须等待解锁后才能执行DELETE语句。代码13.7的执行结果如图13.4所示,代码13.8的执行结果如图13.5所示。
图13.4 代码13.7的执行结果 图13.5 代码13.8的执行结果【深入学习】关于上述代码的分析如下所示:
第1~4行启动一个事务,实现在"商品库存"数据表中使用HOLDLOCK表级锁的操作。
第6~7行显示数据表被锁定的时间。
第9~13行在等待15秒之后解除对数据表的锁定,然后提交事务。
第14~18行启动一个事务,查询数据表中的数据信息,并记录查询数据的时间。
第19~24行执行删除数据表中数据信息的操作,并记录删除数据的时间。
第25行执行回滚事务的操作。
说明:若想实现本实例,应首先创建两个不同的查询窗口,然后将代码13.7和代码13.8输入到不同的查询窗口中分别执行,并且两个查询窗口中程序代码的执行间隔不能超过15秒。
- 表级锁的使用
- GUID使用的使用
- ${}的使用
- 的使用
- @[],@()的使用
- ->的使用
- +、-、*、/、%的使用
- &&的使用
- %:的使用
- Makefile中使用$$的使用
- Makefile中使用$$的使用
- Red5的使用--使用日志
- prefernce的使用具体使用
- 【工具使用】git 的使用
- 关于使用AsyncTaskLoader的使用
- 使用CABasicAnimation的基本使用
- 使用RocketMQ的客户端使用
- gulp的使用基本使用
- 数据库 事务并发控制
- (function($){...})(jQuery)是什么…
- bnu 45518
- 数据库事务设置保存点
- Eclipse汉化方法
- 表级锁的使用
- 设置隔离级别实现并发控制
- Linux的防火墙配置
- 解决win7没有找到suite objects.dll 因此rational rose不能能启动 运行Rose 提示错误
- 父窗体与子窗体调用总结
- myeclipse打war包时可能报错的解决…
- session什么时候被创建
- in与exist , not in与not exist 的区别
- MySQL中SYSDATE()和NOW()的区别