Heim > Datenbank > MySQL-Tutorial > Wie verarbeitet MySQL verschachtelte Transaktionen mithilfe von Sicherungspunkten?

Wie verarbeitet MySQL verschachtelte Transaktionen mithilfe von Sicherungspunkten?

Patricia Arquette
Freigeben: 2024-11-28 03:50:22
Original
600 Leute haben es durchsucht

How Does MySQL Handle Nested Transactions Using Savepoints?

Verschachtelte Transaktionen in MySQL

Im Gegensatz zu bestimmten anderen Datenbankverwaltungssystemen unterstützt MySQL verschachtelte Transaktionen nicht nativ. Das bedeutet, dass Sie innerhalb einer bestehenden Transaktion keine neue Transaktion erstellen können. Allerdings bietet MySQL InnoDB, eine beliebte Speicher-Engine, die in MySQL verwendet wird, eine Lösung für die Verwaltung verschachtelter transaktionsähnlicher Verhaltensweisen mithilfe von Sicherungspunkten.

SAVEPOINTS in InnoDB

Mit Savepoints können Sie temporäre Meilensteine ​​innerhalb einer Transaktion erstellen. Sie können einen Sicherungspunkt erstellen und benennen und dann zu diesem Sicherungspunkt zurückkehren, um alle danach ausgeführten Vorgänge rückgängig zu machen. Dies bietet ein Maß an Granularität und Flexibilität, das verschachtelten Transaktionen ähnelt.

So verwenden Sie SAVEPOINTS

Um Savepoints in MySQL zu verwenden, können Sie die folgenden Schritte ausführen:

  1. Starten Sie eine Transaktion mit dem Befehl START TRANSACTION.
  2. Erstellen Sie eine Speicherpunkt mithilfe des Befehls SAVEPOINT. Geben Sie ihm einen aussagekräftigen Namen, z. B. tran2.
  3. Führen Sie alle Vorgänge aus, die Sie in den Sicherungspunkt einschließen möchten.
  4. Um zum Sicherungspunkt zurückzukehren, verwenden Sie den Befehl ROLLBACK TO gefolgt vom Namen des Sicherungspunkts.
  5. Wenn Sie die gesamte Transaktion rückgängig machen möchten, verwenden Sie ROLLBACK Befehl.

Beispiel

Betrachten Sie das folgende Beispiel:

CREATE TABLE t_test (id INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;

START TRANSACTION;

INSERT
INTO    t_test
VALUES  (1);

SELECT  *
FROM    t_test;

 id
---
  1

SAVEPOINT tran2;

INSERT
INTO    t_test
VALUES  (2);

SELECT  *
FROM    t_test;

 id
---
  1
  2

ROLLBACK TO tran2;

SELECT  *
FROM    t_test;

 id
---
  1

ROLLBACK;

SELECT  *
FROM    t_test;

 id
---
Nach dem Login kopieren

In diesem Beispiel zeigen wir, wie ein Rollback zu einem Sicherungspunkt durchgeführt wird (tran2) und dann die gesamte Transaktion zurücksetzen.

Das obige ist der detaillierte Inhalt vonWie verarbeitet MySQL verschachtelte Transaktionen mithilfe von Sicherungspunkten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage