-- TRANSAKCIJA 1.

-- Primjer 1.
-- 1. 
BEGIN TRAN 

-- 3.
UPDATE Proizvod
SET CijenaBezPDV *= 1.01
WHERE IDProizvod = 777

-- 5.
ROLLBACK TRAN

-- Primjer 2.
-- 1. 
BEGIN TRAN

-- 3.
UPDATE Proizvod
SET CijenaBezPDV *= 1.01
WHERE IDProizvod = 777

-- 5.
ROLLBACK TRAN

-- Primjer 3.
-- 1. 
SET TRANSACTION ISOLATION LEVEL READ COMMITTED

-- 3.
BEGIN TRAN

-- 5.
UPDATE Proizvod
SET CijenaBezPDV *= 1.01
WHERE IDProizvod = 777

-- 7.
ROLLBACK TRAN

-- Primjer 4.
-- 1. 
SET TRANSACTION ISOLATION LEVEL READ COMMITTED

-- 3.
BEGIN TRAN

-- 5.
UPDATE Proizvod
SET CijenaBezPDV *= 1.01
WHERE IDProizvod = 777

-- 7.
ROLLBACK TRAN

-- Primjer 5.
-- 1. 
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ

-- 3.
BEGIN TRAN

-- 5.
SELECT * FROM Proizvod WHERE IDProizvod BETWEEN 316 AND 320

-- 7.
ROLLBACK TRAN

-- Primjer 6.
-- 1. 
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

-- 3.
BEGIN TRAN

-- 5.
SELECT Naziv FROM Proizvod

-- 7.
ROLLBACK TRAN

-- Primjer 7.
-- 1. 
SET TRANSACTION ISOLATION LEVEL READ COMMITTED

-- 3.
BEGIN TRAN

-- 5.
UPDATE Drzava SET Naziv = Naziv + ' - promijenjeno' WHERE IDDrzava = 1

-- 7.
ROLLBACK TRAN


-- Primjer 8.
-- 1. 
SET TRANSACTION ISOLATION LEVEL READ COMMITTED

-- 3.
BEGIN TRAN

-- 5.
SELECT * FROM Drzava WHERE IDDrzava = 1 -- Neponovljivo čitanje. Rješavamo ga podizanjem izolacijskog nivoa barem na REPEATABLE READ.

-- 8.
SELECT * FROM Drzava WHERE IDDrzava = 1 -- Isti SELECT ssad vraća drukčiji rezultat.

-- 9.
ROLLBACK TRAN

-- Primjer 9.
-- 1. 
SET TRANSACTION ISOLATION LEVEL READ COMMITTED

-- 3.
BEGIN TRAN

-- 5.
SELECT * FROM Drzava WHERE Naziv LIKE 'H%' -- vraća 1 redak.

-- 8.
SELECT * FROM Drzava WHERE Naziv LIKE 'H%' -- 2. redak je fantom. Rješavamo ga podizanjem izolacijskog nivoa na SERIALIZABLE.

-- 9.
ROLLBACK TRAN
