-- TA 1SELECT preis FROM produkteWHERE produktnr = 17; -- 0,89 EURUPDATE produkte SET preis = 0WHERE produktnr = 17; -- TA 2 SELECT preis FROM produkteROLLBACK; WHERE produktnr = 17; -- 0 EUR COMMIT;
Lost Update
-- TA 1 -- TA 2UPDATE produkte UPDATE produkte SET preis = preis + 1 SET preis = preis + 1WHERE produktnr = 17; WHERE produktnr = 17;-- Eigentlich müsste das Produkt jetzt 2 teurer sein. Eine TA ist-- aber verloren gegangen und es ist nur 1 teurer.
Im SQL-Standard ist festgelegt, dass DBMS Lost Updates unterbinden müssen, heißt ein Lost Update taucht normalerweise nie auf.
Non-repeatable read
-- TA 1SELECT preis FROM produkteWHERE produktnr = 17;-- 0,89 EUR -- TA 2 UPDATE produkte SET preis = preis + 0.1 WHERE produktnr = 17; COMMIT;SELECT preis FROM produkteWHERE produktnr = 17;-- 0,99 EURCOMMIT;
Phantomproblem
-- TA 1SELECT * FROM namen;-- 2 Namen werden angezeigt -- TA 2 INTO namen VALUES ('peter'); COMMIT;SELECT COUNT(*) FROM namen;-- 3COMMIT;