SQL锁表语句

news/2023/6/5 20:55:59


锁定数据库的一个表

SELECT * FROM table WITH (HOLDLOCK)

注意: 锁定数据库的一个表的区别

SELECT * FROM table WITH (HOLDLOCK)

其他事务可以读取表,但不能更新删除

SELECT * FROM table WITH (TABLOCKX)

其他事务不能读取表,更新和删除

SELECT 语句中“加锁选项”的功能说明

SQL Server提供了强大而完备的锁机制来帮助实现数据库系统的并发性和高性能。用户既能使用SQL Server的缺省设置也可以在select 语句中使用“加锁选项”来实现预期的效果。 本文介绍了SELECT语句中的各项“加锁选项”以及相应的功能说明。

功能说明: 

NOLOCK(不加锁)

此选项被选中时,SQL Server 在读取或修改数据时不加任何锁。 在这种情况下,用户有可能读取到未完成事务(Uncommited Transaction)或回滚(Roll Back)中的数据, 即所谓的“脏数据”。

HOLDLOCK(保持锁)

此选项被选中时,SQL Server 会将此共享锁保持至整个事务结束,而不会在途中释放。

UPDLOCK(修改锁)

此选项被选中时,SQL Server 在读取数据时使用修改锁来代替共享锁,并将此锁保持至整个事务或命令结束。使用此选项能够保证多个进程能同时读取数据但只有该进程能修改数据。

TABLOCK(表锁)

此选项被选中时,SQL Server 将在整个表上置共享锁直至该命令结束。 这个选项保证其他进程只能读取而不能修改数据。

PAGLOCK(页锁)

此选项为默认选项, 当被选中时,SQL Server 使用共享页锁。

TABLOCKX(排它表锁)

此选项被选中时,SQL Server 将在整个表上置排它锁直至该命令或事务结束。这将防止其他进程读取或修改表中的数据。

 

HOLDLOCK 持有共享锁,直到整个事务完成,应该在被锁对象不需要时立即释放,等于SERIALIZABLE事务隔离级别

NOLOCK 语句执行时不发出共享锁,允许脏读 ,等于 READ UNCOMMITTED事务隔离级别

PAGLOCK 在使用一个表锁的地方用多个页锁

READPAST 让sql server跳过任何锁定行,执行事务,适用于READ UNCOMMITTED事务隔离级别只跳过RID锁,不跳过页,区域和表锁

ROWLOCK 强制使用行锁

TABLOCKX 强制使用独占表级锁,这个锁在事务期间阻止任何其他事务使用这个表

UPLOCK 强制在读表时使用更新而不用共享锁

注意: 锁定数据库的一个表的区别

SELECT * FROM table WITH (HOLDLOCK) 其他事务/语句可以读取表,但不能更新删除

SELECT * FROM table WITH (TABLOCKX) 其他事务/语句不能读取表,更新和删除

 

例子:

begin tran 
        select * from test_table with (TABLOCKX)  //表锁
        commit tran

这时,其它语句,比如select * from test_table将只能等待

转载于:https://www.cnblogs.com/hhzhang/archive/2013/04/01/2993100.html


https://dhexx.cn/news/show-18734.html

相关文章

[摘]一张图 , oracle merge用法:

转载于:https://www.cnblogs.com/nvd11/archive/2013/04/02/2996855.html

三维分布图 matlab,怎样用matlab画三维三点分布图

怎样用matlab画三维三点分布图mip版 关注:226 答案:2 悬赏:50解决时间 2021-01-28 14:02已解决2021-01-28 06:18怎样用matlab画三维三点分布图最佳答案2021-01-28 06:53plot3(x向量,y向量,z向量,.) 最后.表示用点画出来,还有*,…

6-1-1——this指针与const应用

/* 【项目1】下面的程序存在编译错误。有两种方法可以修改,请给出这两种修改方案,在报告中说明你倾向于用哪一种?为什么?处理此类问题的原则是什么? * 程序的版权和版本声明部分 * Copyright (c)2012, 烟台大学计算机…

Matlab建模红细胞,图像处理—红细胞计数(Matlab)

图像处理—红细胞计数(Matlab) 红细胞计数处理过程使用全局阈值二值化图像,仅使白细胞可以在二值图像中显示;调整二值化图像阈值,使白细胞和红细胞都可在二值图像中显示出来;将两图像进行减操作,从第二幅图像中去除白细…

oracle性能调优 linux,Oracle数据库性能优化之调优 PPT

Oracle数据库性能优化之调优培训大纲:Tuning DesignTuning ApplicationTuning ProcessTuning InstanceTuning DatabaseTuning IOTuning OSWait Event需求开发阶段,数据库优化的目的是说服业务人员接受对数据库影响比较小的操作习惯,而放弃那些…

Linux网络协议栈(三)——网络设备(1)

网络设备(network device)是内核对网络适配器(硬件)的抽象与封装,并为各个协议实例提供统一的接口,它是硬件与内核的接口,它有两个特征:(1) 作为基于硬件的网络适配器与基于软件的协议之间的接口;(2) 内核协议栈…

就这样一直走下去吧 亲爱的

转载于:https://www.cnblogs.com/88223100/archive/2013/04/08/3007386.html

cocos2d-x for wp之EaseActions——运动加速效果

在现实生活中有很多情况下,物体的运动都是带有加速度的运动。如果只是凭借cocos2d-x(wp)里的CCActionInstanse(瞬时动作的基类)和CCActionInterval(延时动作的基类)是无法达到“逼真”的现实运动…

是面试官放水,还是企业实在是缺人?这都没挂,字节原来这么容易进...

“字节是大企业,是不是很难进去啊?”“在字节做软件测试,能得到很好的发展吗?一进去就有9.5K,其实也没有想的那么难”直到现在,心情都还是无比激动! 本人211非科班,之前在字节和腾讯…

oracle select出来的表,Oracle使用select语句复制表

Oracle使用select语句复制表,要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以1.INSERT INTO SELECT语句语句形式为:Insert into Table2(field1,field2,...) select value1,value2,…