sql-deadlock-examples/README.MD
Maksymilian Lúmenn Stachowiak 4ed642350c Added DDL Script
2023-12-12 17:50:19 +01:00

1.1 KiB

Purpose

This repostiory contains examples which might be used to show/explain why and when deadlocks happen in MSSQL.

How to

  1. Create example tables using ddl-script.sql
  2. Open two different SQL sessions.
  3. In each session open one file.
  4. 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