About with (nolock) in SQL and withnolock in SQL
What does NOLOCK in SQL Server mean?
It is generally used in such statements: select * from t with (NOLOCK)
Nolock is a non-lock query that can read the data locked by the transaction, also known as dirty read.
Note:
So that the query of the current session is not blocked by the transactions of other sessions.
But in this way, the "uncommitted after modification" data of other transactions is read.
That is, allow "read uncommitted"
The following is an example:
Open a window in sqlserver:
Write the following statement:
Begin tran update STUDENT set sname = '000000' waitfor delay '0: 0: 10' update STUDENT set sname = '000000' commit tran
Open another window in sqlserver:
Write the following statement:
Select * from student with (nolock)
Execute the first window first, and execute the second window within 10 seconds (preferably 2 seconds later, not too fast, because the execution of the first window takes some time)
The query result is sname = '000000'
If you change the SQL statement in the second window:
Select * from student
Then, the second window does not return immediately. It will wait until the execution of the first window is complete and then query and return the result.
Sname = '000000'
Copyright Disclaimer: This article is an original article by the blogger and cannot be reproduced without the permission of the blogger.