锁表操作

Posted zzgxl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了锁表操作相关的知识,希望对你有一定的参考价值。

--锁表(其它事务不能读、更新、删除)
BEGIN TRAN
SELECT * FROM <表名> WITH(TABLOCKX);
WAITFOR delay 00:00:20
COMMIT TRAN


--锁表(其它事务只能读,不能更新、删除)
BEGIN TRAN
SELECT * FROM <表名> WITH(HOLDLOCK);
WAITFOR delay 00:00:20
COMMIT TRAN

--锁部分行
BEGIN TRAN
SELECT * FROM <表名>  WITH(XLOCK) WHERE ID IN (1,2,3);
WAITFOR delay 00:01:20
COMMIT TRAN

--查看被锁表
select   request_session_id   锁表进程,OBJECT_NAME(resource_associated_entity_id) 被锁表名  
from   sys.dm_tran_locks where resource_type=OBJECT;

--解锁
declare @spid  int
Set @spid  = 55 --锁表进程
declare @sql varchar(1000)
set @sql=kill +cast(@spid  as varchar)
exec(@sql)

 

以上是关于锁表操作的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver跳过锁表等待

MySQL锁表和解锁操作

锁表操作

informix 锁表问题

Sqlserver各种数据库的锁表和解锁操作

mysql 锁表查询和解锁操作