sqlserver 数据库锁

1、HOLDLOCK

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

// language: sql
BEGIN TRAN
SELECT * FROM ceb_Area WITH(ROWLOCK,HOLDLOCK) where ID=1--行锁
SELECT * FROM ceb_Area WITH(TABLOCK,HOLDLOCK) where ID=1--表锁
WAITFOR DELAY '00:00:10'
COMMIT TRAN;  

2、TABLOCKX 排他表锁

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

// language: sql
BEGIN TRAN
SELECT * FROM CheweiCustoms WITH(TABLOCKX) WHERE id=313;
UPDATE CheweiCustoms SET Name='abccc' WHERE id = 313;
SELECT * FROM CheweiCustoms WHERE id=313;
WAITFOR DELAY '00:00:10';
COMMIT TRAN;  

同一个事物内,可以操作被锁住的表。其它事物不能操作,必须等锁表的事物完成后才行。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注