Transaktionen in MySQL
MySQL: Transactions
(2016 scheiterte die Ausführung im Tegel-Center, aber 2018 ging es in anderen Unterrichtsräumen dann wieder!)
Beispiel für eine Transaktion: Um 200 Taler von der Kasse auf ein Ausgabenkonto umzubuchen, sollen zwei Zeilen zu einer Buchungstabelle hinzugefügt werden: die erste für die Abbuchung von der Kasse, die zweite für die Zubuchung zu dem Ausgabenkonto.
Es sollte vermieden werden, daß nur eine dieser beiden Buchungen erfaßt wird.
SET AUTOCOMMIT = 0;
CREATE TABLE t (f INT);
BEGIN; -- Änderungen vor Beginn sind für alle sichtbar
INSERT INTO t(f) VALUES (1);
SELECT * FROM t;
ROLLBACK;
SELECT * FROM t;
INSERT INTO t(f) VALUES (2);
- weitere Verbindung: SELECT * FROM t;
COMMIT;
- weitere Verbindung: SELECT * FROM t;
Geschwindigkeit
Nach einer Transaktion werden die Daten unter manchen Datenbanksystemen zur Kontrolle noch einmal gelesen. Dies kann das Einfügen auf Festplatten verlangsamen. Normalerweise ist ja jedes einzelne Einfügekommando eine Transaktion (autocommit). Daher können zur Beschleunigung mehrere Einfügeanweisungen zu einer Transaktion zusammengefaßt werden.