MySQLi-Transaktionen

Mit MySQLi lassen sich Transaktionsklammern nutzen, um einen konsistenten Datenbankzustand zu erzwingen. Im folgenden Fall werden zwei Abfragen an die Datenbank gestellt: einmal die Anzahl der Kunden und einmal den Gesamtrechnungsbetrag. Der Inhalt der Datenbank könnte sich zwischen beiden Abfragen ändern. Deshalb wird mit einer Transaktionsklammer sichergestellt, dass keine fremden Änderungen das Ergebnis beeinflussen. Der Einfachheit halber ist hier nur das objektorientierte Beispiel wiedergegeben:

Mit der Funktion autocommit() wird das automatische Schreiben in die Datenbank ausgeschaltet beziehungsweise angeschaltet. Das automatische Schreiben wird ausgeschaltet, das heißt, es muss ein Commit ausgeführt werden, sonst werden niemals Daten in der Datenbank hinterlegt. Es würde automatisch ein Rollback durchgeführt werden. In dem konkreten Beispiel ist dieser Aufruf jedoch wirkungslos, da schon mit einer Transaktionsklammer gearbeitet wird.

Mit begin_transaction wird die Transaktionsklammer geöffnet. Dann finden die Abfragen und auch die Änderung auf der Datenbank statt. Mit dem Aufruf der Funktion commit() wird die Transaktionsklammer geschlossen. Auf das rollback() könnte verzichtet werden, da bei einem fehlerhaften Commit immer auch ein Rollback ausgeführt wird. rollback() kann verwendet werden, um künstlich einen Rollback zu verursachen und die Transaktionsklammer ohne commit() zu verlassen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert