Starten einer Transaktion mit BEGIN
In diesem Schritt werden Sie lernen, wie Sie in MySQL eine Transaktion (Transaction) mit der BEGIN
-Anweisung starten. Transaktionen sind ein grundlegendes Konzept in der Datenbankverwaltung, das die Datenintegrität und -konsistenz gewährleistet. Eine Transaktion ist eine Sequenz von einer oder mehreren SQL-Operationen, die als eine einzelne Arbeitsseinheit behandelt werden. Entweder schlagen alle Operationen innerhalb der Transaktion fehl, oder alle werden erfolgreich ausgeführt.
Bevor wir uns mit dem praktischen Teil befassen, verstehen wir zunächst, warum Transaktionen wichtig sind. Stellen Sie sich vor, Sie überweisen Geld von einem Bankkonto auf ein anderes. Dies umfasst zwei Operationen: das Abheben des Betrags vom Konto des Senders und das Gutschreiben des Betrags auf das Konto des Empfängers. Wenn die erste Operation erfolgreich ist, die zweite jedoch fehlschlägt (z. B. aufgrund eines Systemausfalls), würde das Geld verloren gehen. Transaktionen verhindern solche Inkonsistenzen, indem sie sicherstellen, dass beide Operationen entweder gemeinsam erfolgreich sind oder gemeinsam fehlschlagen.
Um in MySQL eine Transaktion zu starten, verwenden Sie die BEGIN
-Anweisung (oder ihr Alias START TRANSACTION
). Diese Anweisung signalisiert den Beginn einer neuen Transaktion. Alle nachfolgenden SQL-Anweisungen werden Teil dieser Transaktion sein, bis Sie entweder die Änderungen COMMIT
(dauerhaft machen) oder ROLLBACK
(verwerfen).
Beginnen wir damit, uns mit dem MySQL-Server zu verbinden. Öffnen Sie Ihr Terminal und führen Sie den folgenden Befehl aus:
mysql -u root -p
Sie werden nach dem Root-Passwort gefragt. Geben Sie das Passwort ein, das Sie während der MySQL-Installation festgelegt haben. Wenn Sie kein Passwort festgelegt haben, drücken Sie einfach die Eingabetaste.
Nachdem Sie sich jetzt mit dem MySQL-Server verbunden haben, erstellen wir eine Datenbank und eine Tabelle, mit denen wir arbeiten können. Führen Sie die folgenden SQL-Anweisungen aus:
CREATE DATABASE IF NOT EXISTS labex_db;
USE labex_db;
CREATE TABLE IF NOT EXISTS accounts (
id INT PRIMARY KEY AUTO_INCREMENT,
account_number VARCHAR(50) NOT NULL,
balance DECIMAL(10, 2) NOT NULL
);
Diese Befehle erstellen eine Datenbank namens labex_db
und eine Tabelle namens accounts
in dieser Datenbank. Die Tabelle accounts
hat drei Spalten: id
, account_number
und balance
.
Als Nächstes fügen wir einige Anfangsdaten in die Tabelle accounts
ein:
INSERT INTO accounts (account_number, balance) VALUES
('ACC001', 1000.00),
('ACC002', 500.00);
Jetzt starten wir eine Transaktion. Führen Sie die folgende Anweisung aus:
BEGIN;
Dieser Befehl startet eine neue Transaktion. Alle nachfolgenden SQL-Anweisungen werden Teil dieser Transaktion sein.
Um zu überprüfen, ob die Transaktion gestartet wurde, können Sie eine einfache Update-Anweisung ausführen. Beispielsweise ziehen wir 100 von Konto 'ACC001' ab:
UPDATE accounts SET balance = balance - 100 WHERE account_number = 'ACC001';
Jetzt überprüfen wir den Kontostand von 'ACC001':
SELECT * FROM accounts WHERE account_number = 'ACC001';
Sie sollten sehen, dass der Kontostand von 'ACC001' auf 900,00 aktualisiert wurde. Diese Änderungen sind jedoch noch nicht dauerhaft. Sie sind nur innerhalb der aktuellen Transaktion sichtbar. Um die Änderungen dauerhaft zu machen, müssten Sie die Transaktion COMMIT
, was Sie im nächsten Schritt lernen werden. Wenn Sie jetzt die MySQL-Verbindung schließen, ohne die Transaktion zu committen oder zurückzunehmen, würden die Änderungen verloren gehen.