SAVEPOINTidentifier
ROLLBACK [WORK] TO SAVEPOINTidentifier
RELEASE SAVEPOINTidentifier
InnoDB
unterstützt die SQL-Anweisungen
SAVEPOINT
, ROLLBACK TO
SAVEPOINT
, RELEASE SAVEPOINT
und
das optionale Schlüsselwort WORK
für
ROLLBACK
.
Die SAVEPOINT
-Anweisung setzt einen benannten
Transaktionsspeicherpunkt mit dem Namen
identifier
. Hat die laufende
Transaktion einen Speicherpunkt gleichen Namens, dann wird der
alte Speicherpunkt gelöscht und ein neuer gesetzt.
Die Anweisung ROLLBACK TO SAVEPOINT
macht
eine Transaktion bis zum benannten Speicherpunkt rückgängig.
Änderungen, die die aktuelle Transaktion an Datensätzen nach
dem Speicherpunkt vorgenommen hat, werden im Rollback
rückgängig gemacht; allerdings hebt InnoDB
Datensatzsperren, die nach dem Speicherpunkt im Speicher
abgelegt wurden, nicht auf. (Beachten Sie,
dass bei einem neu eingefügten Datensatz die Sperrinformation
in dem im Datensatz gespeicherten Transaktionsbezeichner
enthalten ist, d. h., die Sperre wird nicht separat im Speicher
abgelegt. In diesem Fall wird die Datensatzsperre beim
Rückgängigmachen aufgehoben.) Speicherpunkte, die zeitlich
nach dem genannten Speicherpunkt liegen, werden gelöscht.
Wenn die ROLLBACK TO SAVEPOINT
-Anweisung den
folgenden Fehler zurückgibt, heißt das, dass es keinen
Speicherpunkt des angegebenen Namens gibt:
ERROR 1181: Got error 153 during ROLLBACK
Die Anweisung RELEASE SAVEPOINT
entfernt den
genannten Speicherpunkt aus der Menge der Speicherpunkte für
die laufende Transaktion. Es findet weder eine Übergabe noch
ein Rollback statt. Existiert der Speicherpunkt nicht, dann
tritt ein Fehler auf.
Alle Speicherpunkte der aktuellen Transaktion werden gelöscht,
wenn Sie eine COMMIT
- oder
ROLLBACK
-Anweisung absetzen, die keinen
Speicherpunkt benennt.
Seit MySQL 5.0.17 wird eine neue Speicherpunktstufe erstellt, wenn eine gespeicherte Funktion aufgerufen oder ein Trigger aktiviert wird. Die Speicherpunkte der vorherigen Stufen sind dann nicht mehr verfügbar, damit Konflikte mit Speicherpunkten der neuen Stufe vermieden werden. Wenn die Funktion oder der Trigger beendet wird, werden alle hierdurch erstellten Speicherpunkte gelöscht und die vorherige Speicherpunktstufe wird wiederhergestellt.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.