Locking — Complete Guide
Locking — Complete Guide: free step-by-step lesson with examples, common mistakes, and interview tips — part of SQL Server Tutorial on Toolliyo Academy.
On this page
SQL Server Tutorial · Lesson 54 of 100
Locking
SQL basics ✓ → Queries → Advanced
Queries · 2 — JOINs · ~10 min · SQL — Transactions & Concurrency
What is this?
Locks protect rows/pages/tables while transactions read or write. Modes include shared (S), exclusive (X), and intent locks.
Why should you care?
Without locks, two cashiers could sell the last item twice. With too many locks, the app feels frozen.
See it live — copy this example
Run in SQL Server Management Studio (SSMS) or Azure Data Studio.
USE DataVerse;
BEGIN TRAN;
UPDATE dbo.Accounts WITH (ROWLOCK, UPDLOCK)
SET Balance = Balance - 10
WHERE AccountId = 1;
-- Holds locks until COMMIT/ROLLBACK
SELECT resource_type, request_mode, request_status
FROM sys.dm_tran_locks
WHERE request_session_id = @@SPID;
COMMIT;
What happened?
- UPDLOCK/ROWLOCK takes update locks on the row early.
- dm_tran_locks shows what your session holds before commit.
Practice next
- Run the BEGIN TRAN update without committing.
- Query dm_tran_locks from another window for that session_id.
- COMMIT and watch locks clear.
- Try READCOMMITTEDLOCK hints vs default.
- Inspect blocking_session_id in dm_exec_requests.
Remember
Locks guard concurrent access. Exclusive writes block other writers. Keep transactions short.
Row locks on accounts
DataVerse transfer takes UPDLOCK on account rows.
Outcome: Two transfers cannot interleave balances incorrectly.
Interview prep for this lesson
Practice these questions aloud after reading—each links to a full structured answer.
Sign in to ask a question or upvote helpful answers.
No questions yet — be the first to ask!