
Kapitel 7: MySQL-Sprachreferenz 471
Wenn Sie transaktionssichere Tabellen (wie InnoDB oder BDB ) benutzen, k¨onnen Sie MySQL
mit folgendem Befehl in den Nicht-autocommit-Mo dus setzen:
SET AUTOCOMMIT=0
Danach m¨ussen Sie COMMIT benutzen, um Ihre
¨
Anderungen auf Platte zu sichern, oder
ROLLBACK, wenn Sie die
¨
Anderungen verwerfen wollen, die Sie seit dem Beginn der Transak-
tion gemacht haben.
Wenn Sie f¨ur eine Reihe von Statements zum AUTOCOMMIT-Modus umschalten wollen, k¨onnen
Sie das BEGIN- oder BEGIN WORK-Statement benutzen:
BEGIN;
SELECT @A:=SUM(gehalt) FROM tabelle1 WHERE type=1;
UPDATE tabelle2 SET zusammenfassung=@A WHERE type=1;
COMMIT;
Beachten Sie, dass bei der Benutzung nicht transaktionssicher Tabellen die
¨
Anderungen
dennoch sofort gespeichert werden, unabh¨angig vom Status des autocommit-Modus.
Wenn Sie ROLLBACK bei der Aktualisierung einer nicht transaktionalen Tabelle ausf¨uhren, er-
halten Sie einen Fehler (ER_WARNING_NOT_COMPLETE_ROLLBACK) als Warnung. Alle transak-
tionssicheren Tabellen werden zur¨uckgesetzt, aber nicht transaktionale Tabelle ¨andern sich
nicht.
Wenn Sie BEGIN oder SET AUTOCOMMIT=0 benutzen, sollten Sie die MySQL-Bin¨ar-Log-Datei
f¨ur Datensicherungen benutzen statt der ¨alteren Update-Log-Datei. Transaktionen wer-
den in der Bin¨ar-Log-Datei in einem St¨uck gespeichert, beim COMMIT, um sicherzustellen,
dass Transaktionen, die zur¨uckgesetzt werden (Rollback), nicht gespeichert werden. Siehe
Abschnitt 5.9.4 [Binary log], Seite 303.
Folgende Befehle beenden automatisch eine Transaktion (als ob Sie ein COMMIT vor der
Ausf¨uhrung des Befehls ausgef¨uhrt h¨atten:
ALTER TABLE BEGIN CREATE INDEX
DROP DATABASE DROP TABLE RENAME TABLE
TRUNCATE
Sie k¨onnen die Isolationsebene (Isolation Level) f¨ur Transaktionen mit SET TRANSACTION
ISOLATION LEVEL ... Abschnitt 7.7.3 [SET TRANSACTION], Seite 473 ¨andern.
7.7.2 LOCK TABLES/UNLOCK TABLES-Syntax
LOCK TABLES tabelle [AS alias] {READ | [READ LOCAL] | [LOW_PRIORITY] WRITE}
[, tabelle {READ | [LOW_PRIORITY] WRITE} ...]
...
UNLOCK TABLES
LOCK TABLES sperrt Tabellen f¨ur den aktuellen Thread. UNLOCK TABLES hebt alle Sperren
auf, die vom aktuellen Thread veranlasst wurden. Alle Tabellen, die durch den aktuellen
Thread gesperrt sind, werden automatisch entsperrt, wenn der Thread ein weiteres LOCK
TABLES absetzt oder wenn die Verbindung zum Server geschlossen wird.
Die wichtigsten Gr¨unde f¨ur die Benutzung von LOCK TABLES sind die Emulation von
Transaktionen oder um mehr Geschwindigkeit bei der Aktualisierung von Tabellen zu
erhalten. Das wird sp¨ater detaillierter erl¨autert.
Komentarze do niniejszej Instrukcji