-- Transakce je posloupnost (zalezi na poradi) prikazu, ktere tvori logicky celek. -- Vlastnosti transakci ACID. -- -- Transakce zacina provadenim SQL prikazu (typicky prvni DML prikaz). -- Transakce konci uspesne prikazem COMMIT, kdy jsou provedene zmeny -- potvrzeny a objevi se v databazi (pri normalnim odhlaseni klienta je proveden -- COMMIT). -- -- Pri chybovem stavu lze zmeny provedene transakci vratit zpet prikazem ROLLBACK. -- Prikazem SAVEPOINT <nazev> je mozne ulozit stav v -- rozpracovane transakci a prikazem ROLLBACK TO <nazev> je mozne -- obnovit stav v bode SAVEPOINT. -- Ukol c.1: Viditelnost zmen jinymi klienty -- Otevrete si jeste jedno spojeni k Oracle (nove putty) -- Prvni okno budeme oznacovat "SQL1>" a nove okno "SQL2>" -- SQL1> Nastavte datum vydani knihy Profesional (isbn 978-80-7461-086-8) na 29.2.2012. -- Tip: DATE '2012-02-29' -- SQL1> Zobrazte si tento zaznam. -- SQL2> Zobrazte si zaznam knihy Profesional -- Ukol c.2: Zruseni provedenych zmen -- Zobrazte si obsah tabulky vytisky -- Zkuste si znovu naimportovat obsah tabulky xdohnal.katalog. -- Provedene zmeny si zobrazte a pak je zruste. -- Ukol c.3: Aktualizace stejnych zaznamu -- Zvyseni osobniho hodnoceni u uvazku id 101 zamestnance s id 10 o 100 Kc. -- Provedte v SQL1> a pak hned v SQL2> -- Co se stalo? -- Potvrdte zmeny v SQL1> -- Potvrdte zmeny v SQL2> -- Ukol c.3b: Aktualizace stejnych zaznamu -- Provedte v SQL1> -- Zvyseni osobniho hodnoceni u uvazku id 101 zamestnance s id 10 o 100 Kc. -- Provedte v SQL2> -- Zvyseni osobniho hodnoceni u uvazku id 102 zamestnance s id 10 o 100 Kc. -- Co se stalo? -- Potvrdte zmeny v SQL1> -- Potvrdte zmeny v SQL2> -- Ukol c.4: Deadlock... -- Zmeny budeme provadet nad tabulkou knihy: -- Mame transakci zmeny vydavatele a zmeny ISBN ve dvou zaznamech... -- Dva uzivatele je budou provadet postupne v obracenem poradi... -- SQL1> Nastavte vydavatele u knihy 'SQL pro seniory' na 'ALPRESS'. -- SQL2> Nastavte isbn knihy 'Divka za zrcadlem' na '978-80-7461-052-3' -- SQL1> Nastavte isbn knihy 'Divka za zrcadlem' na '978-80-7461-052-3' -- SQL2> Nastavte vydavatele u knihy 'SQL pro seniory' na 'ALPRESS'. -- Implicitni chovani transakce v Oracle cti potvrzena data -- READ COMMITTED -- Zmena nastaveni transakce SET TRANSACTION ISOLATION LEVEL READ COMMITTED; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; SET TRANSACTION READ ONLY; SET TRANSACTION READ WRITE; -- Zaznamy lze zamknout rucne: SELECT ... FOR UPDATE; LOCK TABLE ... IN EXCLUSIVE MODE; -- Lze nastavit cas cekani... SELECT .... FOR UPDATE [NOWAIT | WAIT cas] LOCK TABLE ... IN EXCLUSIVE MODE [NOWAIT | WAIT cas] -- Ukol c.5: Vyhnuti se deadlocku zamykanim... -- Stejne operace jako v ukolu c.4, ale nejdrive se menene zaznamy zamknete.