Transaktionssteuerung
MySQL unterstützt lokale Transaktionen durch Anweisungen wie SET AUTOCOMMIT, START TRANSACTION, COMMIT und ROLLBACK.
Syntax:
TRANSAKTION STARTEN |. [NO] RELEASE]
SET AUTOCOMMIT = {0 |. 1}
Standardmäßig ist MySQL autocommit. Wenn Sie Transaktionen durch explizites Commit und Rollback festschreiben und zurücksetzen müssen, müssen Sie zum Starten einen expliziten Transaktionssteuerungsbefehl übergeben eine Transaktion, die sich offensichtlich von der Transaktionsverwaltung von Oracle unterscheidet. Wenn die Anwendung von der Oracle-Datenbank in die MySQL-Datenbank migriert wird, müssen Sie sicherstellen, dass die Transaktion explizit in der Anwendung verwaltet wird.
START TRANSACTION oder BEGIN-Anweisung kann eine neue Transaktion starten.
COMMIT und ROLLBACK werden zum Festschreiben oder Zurücksetzen von Transaktionen verwendet.
CHAIN- und RELEASE-Klauseln werden verwendet, um Operationen zu definieren, nach denen die Transaktionsübermittlung bzw. das Rollback sofort eine neue Sache startet und die gleiche Isolationsstufe wie die vorherige Transaktionsfreigabe aufweist.
SET AUTOCOMMIT kann die Übermittlungsmethode der aktuellen Verbindung ändern. Wenn SET AUTOCOMMIT=0 festgelegt ist, müssen alle Transaktionen nach dem Festlegen über explizite Befehle übermittelt oder zurückgesetzt werden.
Wenn wir nur für bestimmte Anweisungen eine Transaktionskontrolle benötigen, ist es bequemer, START TRANSACTION zum Starten einer Transaktion zu verwenden, sodass wir nach Ende der Transaktion automatisch zur automatischen Übermittlungsmethode zurückkehren können, wenn wir alle unsere Transaktionen wünschen
nicht Wenn es automatisch übermittelt wird, ist es bequemer, die Transaktion durch Ändern von AUTOCOMMIT zu steuern, sodass START TRANSACTION nicht zu Beginn jeder Transaktion ausgeführt werden muss.
Daher ist es am besten, in derselben Transaktion keine Tabellen mit unterschiedlichen Speicher-Engines zu verwenden, da sonst beim Rollback eine spezielle Verarbeitung für Nicht-Transaktionstyp-Tabellen erforderlich ist, da Festschreibung und Rollback nur Festschreibung und Rollback auf Transaktionstyptabellen ermöglichen . Rollback.
Normalerweise werden nur festgeschriebene Transaktionen im Binärprotokoll aufgezeichnet. Wenn eine Transaktion jedoch Tabellen vom Nicht-Transaktionstyp enthält, wird der Rollback-Vorgang auch im Binärprotokoll aufgezeichnet, um sicherzustellen, dass die Aktualisierungen der Tabellen vom Nicht-Transaktionstyp kopiert werden können in die Slave-Datenbank übertragen.
Wie bei der Transaktionsverwaltung von Oracle können nicht alle DDL-Anweisungen zurückgesetzt werden, und einige DDL-Anweisungen führen zu einer impliziten Übermittlung.
In einer Transaktion können Sie einen Teil der Transaktion angeben, der zurückgesetzt werden soll, indem Sie einen Sicherungspunkt definieren. Sie können jedoch keinen Teil der Transaktion angeben, der festgeschrieben werden soll. Für komplexe Anwendungen können mehrere verschiedene Sicherungspunkte definiert werden und verschiedene Sicherungspunkte können zurückgesetzt werden, wenn unterschiedliche Bedingungen erfüllt sind. Es ist zu beachten, dass bei der Definition eines Sicherungspunkts mit demselben Namen der später definierte Sicherungspunkt die vorherige Definition überschreibt. Für nicht mehr benötigte Sicherungspunkte können Sie den Befehl „release savepoint“ verwenden, um den Sicherungspunkt zu löschen. Nach dem Löschen des Sicherungspunkts können Sie den Befehl „rollback to savepoint“ nicht mehr ausführen.
Das folgende Beispiel ist Teil der Simulation einer Rollback-Transaktion, indem ein Sicherungspunkt definiert wird, um den Speicherort der Transaktion anzugeben, die zurückgesetzt werden muss.
Das Obige ist der Inhalt der technischen Schritte zur Verwendung des MySQL-Transaktionsverarbeitungsmechanismus. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).