• Nie Znaleziono Wyników

Temat: Transakcje w systemach baz danych.

N/A
N/A
Protected

Academic year: 2021

Share "Temat: Transakcje w systemach baz danych."

Copied!
2
0
0

Pełen tekst

(1)

Temat: Transakcje w systemach baz danych.

Transakcja jest to zbiór operacji na bazie danych, które stanowią logiczną całość i albo mogą być wykonane wszystkie, albo żadna z nich. Najpopularniejszym przykładem operacji, która powinna być wykonana jako transakcja, jest przelew.

Przebieg transakcji można podzielić na trzy etapy:

 rozpoczęcie transakcji (START TRANSACTION),

 wykonywanie instrukcji składających się na transakcję,

 zatwierdzenie transakcji (COMMIT).

Transakcja nie zawsze musi być zatwierdzona. Jeśli się rozmyślimy, możemy ją odwołać (wycofać).

Zamiast COMMIT należy wtedy użyć polecenia ROLLBACK. Po użyciu tego polecenia system zachowa się tak, jakby instrukcje wchodzące w skład transakcji nie zostały wykonane.

Ćwiczenie T1

Przeczytaj tekst powyżej.

Ćwiczenie T2

Otwórz bazę danych hurtownia_nazwisko. Dodaj do niej nową tabelę o nazwie konta, która będzie przechowywała informacje o stanie kont.

Będzie się ona składała z trzech kolumn:

 id – typu INTEGER, będącej kluczem głównym i zawierającej identyfikator każdego wiersza,

 id_osoby – typu INTEGER, będącej kluczem obcym i zawierającej identyfikator właściciela każdego konta,

 saldo – typu DECIMAL(9,2), zawierającej aktualny stan konta.

Tabela ta zostanie utworzona za pomocą instrukcji:

CREATE TABLE konta (

id INTEGER PRIMARY KEY, id_osoby INTEGER NOT NULL, saldo DECIMAL(9,2) NOT NULL ) TYPE=InnoDB;

Domyślnym silnikiem bazy danych jest silnik MyISAM (nie obsługuje transakcji). Poleceniem TYPE = InnoDB wymuszamy silnik InnoDB, który obsługuje transakcje.

Wypełnij ją przykładowymi danymi:

INSERT INTO konta VALUES (1, 1, 120.00);

INSERT INTO konta VALUES (2, 2, 30.00);

Wyświetl zawartość tabeli konta. Przeczytaj poniższy tekst i przejdź do wykonywania następnego ćwiczenia.

Aby wykonać przelew o wartości 40 zł z pierwszego konta na drugie, trzeba wykonać dwie operacje.

Będą to instrukcje UPDATE postaci:

UPDATE konta SET saldo = saldo – 40 WHERE id = 1;

UPDATE konta SET saldo = saldo + 40 WHERE id = 2;

Pomiędzy jedną a drugą instrukcją mogą zdarzyć się najrozmaitsze awarie, których skutkiem będzie to, że instrukcja zmniejszająca saldo pierwszego konta zostanie wykonana, natomiast instrukcja zwiększająca saldo drugiego konta – już nie. Tym samym z systemu zniknie 40 zł, a do tego nie można dopuścić. Trzeba te dwie instrukcje objąć transakcją.

(2)

Ćwiczenie T3

Wykonanie transakcji.

Wykonaj transakcję polegającą na zmniejszeniu salda konta o identyfikatorze 1 o 40 zł oraz zwiększeniu o tą samą kwotę salda konta o identyfikatorze 2.

Aby wykonać ćwiczenie należy wykonać serię następujących instrukcji:

START TRANSACTION

UPDATE konta SET saldo = saldo – 40 WHERE id = 1;

UPDATE konta SET saldo = saldo + 40 WHERE id = 2;

COMMIT;

O tym, że salda faktycznie zostały zmienione, przekonamy się wyświetlając zawartość tabeli konta za pomocą instrukcji:

SELECT * FROM konta;

Ćwiczenie T4

Odwołanie transakcji.

Obejmij transakcją instrukcje UPDATE zmieniające salda w tabeli konta. Zamiast polecenia COMMIT użyj polecenia ROLLBACK.

Tym razem należy użyć instrukcji:

START TRANSACTION

UPDATE konta SET saldo = saldo – 40 WHERE id = 1;

UPDATE konta SET saldo = saldo + 40 WHERE id = 2;

ROLLBACK;

Jeśli po ich wykonaniu wyświetlimy zawartość tabeli konta, przekonamy się, ze faktycznie salda pozostały niezmienione.

Ćwiczenie T5

Izolacja transakcji. Stan danych w trakcie trwania transakcji.

Instrukcje wykonywane podczas transakcji nie mają wpływu na stan danych w bazie. Dopiero użycie polecenia COMMIT powoduje widoczna modyfikację danych. Przekonamy się o tym wykonując to ćwiczenie.

Nawiąż dwa połączenia z bazą danych: w jednym z nich wykonaj transakcję zmieniającą stan kont w tabeli konta. W trakcie wykonywania transakcji sprawdzaj stan tabeli w obu połączeniach.

Należy uruchomić dwukrotnie klienta bazy danych i nawiązać połączenia. W pierwszym połączeniu trzeba wykonać instrukcje:

START TRANSACTION

UPDATE konta SET saldo = saldo – 40 WHERE id = 1;

UPDATE konta SET saldo = saldo + 40 WHERE id = 2;

a następnie w obu połączeniach sprawdzić stan tabeli konta. Będzie on taki jak na rysunku obok (stan tabeli konta w trakcie transakcji).

W dalszej kolejności w pierwszym połączeniu należy zatwierdzić transakcję, wywołując polecenie COMMIT, i ponownie sprawdzić stan tabeli.

Przekonasz się, że faktycznie w drugim połączeniu stan tabeli zmienił się dopiero po użyciu instrukcji COMMIT. Stan tabeli konta po zatwierdzeniu transakcji.

Cytaty

Powiązane dokumenty

Zestawienie chałup z wybranych miejscowości łemkowskich Table 1 (cont.).. Comparison on chosen cottages of

Średnia arytmetyczna to liczba uzyskana przez dodanie wszystkich wyników w próbie i podzielenia tej sumy przez liczebność próby. ). Temat: Średnia arytmetyczna -

Jeżeli potrzebujesz przypomnieć sobie wiadomości dotyczące danych statystycznych na wykresach proponuję zapoznać się z informacjami zawartymi w podręczniku

Testy wykonać na danych iris oraz danych giełdowych. wybierając różne

b) w którym dniu urodziło się najwięcej dzieci? Podaj datę i liczbę dzieci. c) imiona kobiet w wieku poniżej 25 lat, które urodziły dzieci o wadze powyżej 4000 g. W zapytaniu

Podaj nazwisko, imię, klasę oraz średnią ocen osoby, która osiągnęła najwyższą średnią ocen w całej szkole (jest tylko jedna taka osoba).. Podstawy

Wybieranie danych z wielu tabel polega na użyciu więcej niż jednej tabeli w klauzuli FROM i, najczęściej, kolumn z więcej niż jednej tabeli w klauzuli SELECT i

DWICZENIE: Wyszukaj dane kotów (id_k, imie, wiek) oraz ich band (id_b, nazwa), ale uwzględniając tylko te koty, które są starsze niż 5 lat.. DWICZENIE: Wyszukaj dane band (id_b,