MySQL - transakcje
Transakcja to sekwencyjna grupa operacji manipulowania bazą danych, która jest wykonywana tak, jakby była pojedynczą jednostką pracy. Innymi słowy, transakcja nigdy nie zostanie zakończona, chyba że każda pojedyncza operacja w grupie zakończy się sukcesem. Jeśli jakakolwiek operacja w ramach transakcji nie powiedzie się, cała transakcja zakończy się niepowodzeniem.
W praktyce wiele zapytań SQL połączysz w grupę i wykonasz wszystkie razem jako część transakcji.
Właściwości transakcji
Transakcje mają następujące cztery standardowe właściwości, zwykle określane akronimem ACID -
Atomicity- Zapewnia to pomyślne zakończenie wszystkich operacji w jednostce pracy; w przeciwnym razie transakcja jest przerywana w momencie niepowodzenia, a poprzednie operacje są przywracane do ich poprzedniego stanu.
Consistency - Zapewnia to, że baza danych prawidłowo zmienia stany po pomyślnym zatwierdzeniu transakcji.
Isolation - Dzięki temu transakcje działają niezależnie i są wzajemnie przejrzyste.
Durability - Zapewnia to, że wynik lub skutek zatwierdzonej transakcji będzie się utrzymywał w przypadku awarii systemu.
W MySQL transakcje rozpoczynają się od wyciągu BEGIN WORK i zakończ albo COMMIT lub a ROLLBACKkomunikat. Większość transakcji stanowią polecenia SQL znajdujące się między instrukcją początkową i końcową.
COMMIT i ROLLBACK
Te dwa słowa kluczowe Commit i Rollback są używane głównie do transakcji MySQL.
Po pomyślnym zakończeniu transakcji należy wydać komendę COMMIT, aby zmiany we wszystkich zaangażowanych tabelach odniosły skutek.
W przypadku niepowodzenia należy wydać polecenie ROLLBACK, aby przywrócić poprzedni stan każdej tabeli, do której odwołuje się transakcja.
Możesz kontrolować zachowanie transakcji, ustawiając zmienną sesji o nazwie AUTOCOMMIT. Jeśli AUTOCOMMIT ma wartość 1 (wartość domyślna), to każda instrukcja SQL (w ramach transakcji lub nie) jest uważana za transakcję zakończoną i domyślnie zatwierdzana po jej zakończeniu.
Gdy AUTOCOMMIT jest ustawiony na 0, wydając SET AUTOCOMMIT = 0 polecenie, kolejna seria instrukcji zachowuje się jak transakcja i żadne działania nie są wykonywane, dopóki nie zostanie wydana jawna instrukcja COMMIT.
Możesz wykonać te polecenia SQL w PHP przy użyciu rozszerzenia mysql_query() funkcjonować.
Ogólny przykład transakcji
Ta sekwencja zdarzeń jest niezależna od używanego języka programowania. Ścieżkę logiczną można utworzyć w dowolnym języku używanym do tworzenia aplikacji.
Możesz wykonać te polecenia SQL w PHP przy użyciu rozszerzenia mysql_query() funkcjonować.
Rozpocznij transakcję, wydając polecenie SQL BEGIN WORK.
Wydaj co najmniej jedno polecenie SQL, takie jak SELECT, INSERT, UPDATE lub DELETE.
Sprawdź, czy nie ma błędu i wszystko jest zgodne z wymaganiami.
Jeśli wystąpi jakiś błąd, wydaj polecenie ROLLBACK, w przeciwnym razie wydaj polecenie COMMIT.
Typy tabel bezpiecznych dla transakcji w MySQL
Nie możesz używać transakcji bezpośrednio, ale w pewnych wyjątkach możesz. Jednak nie są one bezpieczne i gwarantowane. Jeśli planujesz używać transakcji w programowaniu MySQL, musisz stworzyć swoje tabele w specjalny sposób. Istnieje wiele typów tabel, które obsługują transakcje, ale najpopularniejszym jestInnoDB.
Obsługa tabel InnoDB wymaga określonego parametru kompilacji podczas kompilowania MySQL ze źródła. Jeśli Twoja wersja MySQL nie obsługuje InnoDB, poproś swojego dostawcę usług internetowych o zbudowanie wersji MySQL z obsługą typów tabel InnoDB lub pobierz i zainstalujMySQL-Max Binary Distribution dla Windows lub Linux / UNIX i pracuj z typem tabeli w środowisku programistycznym.
Jeśli Twoja instalacja MySQL obsługuje tabele InnoDB, po prostu dodaj plik TYPE = InnoDB definicja do instrukcji tworzenia tabeli.
Na przykład poniższy kod tworzy tabelę InnoDB o nazwie tcount_tbl -
root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> create table tcount_tbl
-> (
-> tutorial_author varchar(40) NOT NULL,
-> tutorial_count INT
-> ) TYPE = InnoDB;
Query OK, 0 rows affected (0.05 sec)
Aby uzyskać więcej informacji na temat InnoDB, kliknij poniższe łącze - InnoDB
Możesz użyć innych typów tabel, takich jak GEMINI lub BDB, ale zależy to od instalacji, czy obsługuje te dwa typy tabel, czy nie.