This repository contains examples to cause transactions deadlock in Microsoft SQL Server.
read commited | ||
read uncomitted | ||
repeatable read | ||
serializable | ||
ddl-script.sql | ||
LICENSE | ||
README.MD |
Purpose
This repostiory contains examples which might be used to show/explain why and when deadlocks happen in MSSQL.
How to
- Create example tables using ddl-script.sql
- Open two different SQL sessions.
- In each session open one file.
- Run SQL commands according to comments.
For example - running Read Commited should look like:
Session 1
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
BEGIN TRANSACTION
UPDATE Wycieczki
SET cena = cena*2
WHERE
kraj = 'Bangkok'
-- STEP 1 RUN ABOVE
Session 2
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
BEGIN TRANSACTION
UPDATE Bilety
SET cena = cena * 2
WHERE
kraj = 'Ateny'
-- STEP 2 - RUN ABOVE
Session 1
SELECT
*
FROM
Bilety
WHERE
kraj = 'Ateny'
-- STEP 3 RUN BETWEEN 1 AND 3
COMMIT TRANSACTION -- COMMIT AFTER DEADLOCK HAPPENS
Session 2
SELECT
*
FROM
Wycieczki
WHERE
kraj = 'Bangkok'
-- STEP 4 RUN BETWEEN 2 AND 4
COMMIT TRANSACTION -- COMMIT AFTER DEADLOCK HAPPENS