行锁使用注意事项

行锁使用注意事项

一、ROWLOCK行级锁确保在用户取得被更新的行,到该行进行更新,这段时间内不被其它用户所修改。于是行级锁便可保证数据的一致性,又能提升数据操做的并发性。数据库

二、ROWLOCK告诉SQL Server只使用行级锁,ROWLOCK语法可使用在SELECT,UPDATE和DELETE语句中。并发

三、ROWLOCK指定一般采用页锁或表锁时,采用行锁。 在从 SNAPSHOT 隔离级别操做的事务中指定时,除非将 ROWLOCK 与须要锁的其余表提示(例如,UPDLOCK 和 HOLDLOCK)组合,不然不会取得行锁。spa

四、UPDLOCK指定采用更新锁并保持到事务完成。UPDLOCK 仅对行级别或页级别的读操做采用更新锁。 若是将 UPDLOCK 与 TABLOCK 组合使用或出于一些其余缘由采用表级锁,将采用排他 (X) 锁。指定 UPDLOCK 时,忽略 READCOMMITTED 和 READCOMMITTEDLOCK 隔离级别提示。 例如,若是将会话的隔离级别设置为 SERIALIZABLE 且查询指定 (UPDLOCK, READCOMMITTED),则忽略 READCOMMITTED 提示且使用 SERIALIZABLE 隔离级别运行事务。事务

五、HOLDLOCK等同于SERIALIZABLE。HOLDLOCK 仅应用于那些为其指定了 HOLDLOCK 的表或视图,而且仅在使用了 HOLDLOCK 的语句定义的事务的持续时间内应用。 HOLDLOCK 不能被用于包含 FOR BROWSE 选项的 SELECT 语句。it

使用T-SQL脚本建立数据库表锁

示例:

第一步:在当前会话中锁定数据行。test

--声明数据库引用
use testss;
godate

--声明数据库行锁
begin tran tran1
select * from test1 with(rowlock,updlock) where id='1';
waitfor delay '00:00:10';
commit tran;
goselect

第二步:开启新会话,进行更新锁定数据行。语法

update test1 set sex='女' where id='1';引用

相关文章
相关标签/搜索