使用 (TABLOCKX) 和同时使用 (TABLOCKX, HOLDLOCK) 提示有什么区别?
似乎使用 TABLOCKX 可以独占锁定表,直到事务提交,那么 (TABLOCKX, HOLDLOCK) 有什么好处呢?
例如,
例如,
BEGIN TRANSACTION SELECT TOP 1 * FROM Foo WITH (TABLOCKX)...
vs
BEGIN TRANSACTION SELECT TOP 1 * FROM Foo WITH (TABLOCKX, HOLDLOCK)...
TABLOCKX
对表格进行独占锁定,防止其他锁定被获取。使用HOLDLOCK
会导致该锁定一直保持到事务结束,而不仅仅是在该表格使用完毕后。 - paneerakbari