Sql-Server

在同一批次和事務中的查詢之後使用 WAITFOR 時,查詢完成後是否會釋放表鎖?

  • November 14, 2019

如果我有一個從表中讀取的查詢,如果該查詢使用 WAITFOR 關鍵字(在同一個批處理和事務中)進行,那麼在 WAITFOR 完成和事務完成之前,是否會保留前面查詢的表鎖?(我的意思是在 Read Committed 隔離級別伺服器的上下文中。)

範例查詢:

BEGIN TRANSACTION

SELECT *
FROM ReallyLargeTable

WAITFOR DELAY '00:30';

COMMIT TRANSACTION

WAITFOR DELAY 是否會導致前面的查詢將它的表鎖定針對真正大表再保持 30 秒,直到延遲結束並送出事務?

這取決於事務隔離級別。

在讀取送出時,它將釋放鎖。

在“可重複讀取”和“可序列化”中,它將持有鎖。

您可以在以下文章中找到更多資訊:SET TRANSACTION ISOLATION LEVEL

引用自:https://dba.stackexchange.com/questions/253347