锁定数据库表
SELECT * FROM表(HOLDLOCK)
注意:锁定数据库的表之间的差异
SELECT * FROM表(HOLDLOCK)
其他事务可以读取表,但不能更新和
删除。
SELECT * FROM表(TABLOCKX)
其他事务不能读取表、更新和删除。
SELECT语句中锁定
选项的
函数描述
SQL Server提供了一个强大的和完整的协助
执行的并发性和高
性能的数据库锁机制。
用户可以使用
默认的SQL Server和SELECT语句中取得预期效果的锁定选项的
设置。本文
介绍了各种锁定选项中的SELECT语句和相应的
功能指令。
功能描述:
NOLOCK(解锁)
选择此选项后,SQL Server不添加任何锁时,它读取或
修改数据。在这种
情况下,为用户在阅读完成的交易数据是可能的(提交或回滚事务)(回滚),所谓的脏数据。
HOLDLOCK(按住锁)
当选择此选项时,SQLServer将共享锁保留到整个事务的结尾,并不会在途中释放。
更新锁(修改锁)
当选择此选项时,SQLServer在读取数据时使用修改过的锁
替换共享锁,并将锁保留到整个事务或
命令的结尾。使用此选项确保多个
进程可以同时读取数据,但只有进程可以修改数据。
TABLOCK(锁)
选择此选项后,SQL Server将共享锁,直到提供整个表结束时的
顺序。此选项确保其他进程只能读取数据,但不能修改数据。
paglock(页锁)
此选项是默认选项,当选中时,SQLServer使用共享页锁。
TABLOCKX(排表锁)
选择此选项后,SQL Server将位于独占锁的整个表中,直到事务或命令结束。这将阻止其他进程读取或修改表中的数据。
HOLDLOCK持有共享锁,直到整个交易完成后,应立即释放时,锁定的对象是不需要的,等于可序列化事务隔离级别。
NOLOCK语句不发布共享锁时,它被执行时,允许脏读等于未提交读隔离级别
paglock使用多页锁,表锁的使用
READPAST让SQL Server跳过任何锁定线及执行交易。它适用于读未提交事务隔离级别。它只跳过清除锁,不跳过页面、
区域和表锁。
桨架强迫使用行锁
TABLOCKX强制使用的专用表级锁,防止其他事务在事务期间使用此表
解锁是被迫使用更新的共享锁而阅读桌
注意:锁定数据库的表之间的差异
SELECT * FROM表(HOLDLOCK)其他事务可以读表,但不能修改和删除
SELECT * FROM表(TABLOCKX)其他事务不能读表,更新和删除