Heim  >  Artikel  >  Datenbank  >  Beispiele für die MySQL-Transaktionsverarbeitung erklärt

Beispiele für die MySQL-Transaktionsverarbeitung erklärt

巴扎黑
巴扎黑Original
2017-05-19 15:20:561924Durchsuche

MySQL-Transaktionsverarbeitung

Nicht alle Engines unterstützen die Transaktionsverarbeitung Wie in Kapitel 21 erwähnt, unterstützt MySQL mehrere grundlegende Datenbank-Engines. Wie in diesem Kapitel erläutert, unterstützen nicht alle Engines die explizite Transaktionsverwaltung. MyISAM und InnoDB sind die beiden am häufigsten verwendeten Engines. Ersteres unterstützt kein explizites Transaktionsmanagement, letzteres hingegen schon. Aus diesem Grund wurden die in diesem Buch verwendeten Beispieltabellen für die Verwendung von InnoDB und nicht für das häufiger verwendete MyISAM erstellt. Wenn Ihre Anwendung Transaktionsverarbeitungsfunktionen erfordert, stellen Sie sicher, dass Sie den richtigen Engine-Typ verwenden.

Transaktionsverarbeitung kann verwendet werden, um die Integrität der Datenbank aufrechtzuerhalten. Sie stellt sicher, dass Stapel von MySQL-Operationen entweder vollständig ausgeführt werden oder überhaupt nicht.

Relationales Datenbankdesign speichert Daten in mehreren Tabellen, wodurch die Daten einfacher zu bearbeiten, zu verwalten und wiederzuverwenden sind. Ohne näher auf das Wie und Warum des relationalen Datenbankdesigns einzugehen, sind alle gut gestalteten Datenbankschemata bis zu einem gewissen Grad relational.

Die zuvor verwendete Auftragstabelle ist ein gutes Beispiel. Bestellungen werden in zwei Tabellen gespeichert: „Orders“ und „Orderitems“: „Orders“ speichert die tatsächliche Bestellung, während „Orderitems“ die bestellten Artikel speichert. Die beiden Tabellen sind über eine eindeutige ID, den sogenannten Primärschlüssel, miteinander verknüpft. Diese beiden Tabellen sind wiederum mit anderen Tabellen verknüpft, die Kunden- und Produktinformationen enthalten.

Der Vorgang zum Hinzufügen einer Bestellung zum System ist wie folgt:

(1) Prüfen, ob der entsprechende Kunde in der Datenbank vorhanden ist (Abfrage aus der Kundentabelle) , wenn nicht, fügen Sie ihn/sie hinzu.

(2) Rufen Sie die ID des Kunden ab.

(3) Fügen Sie der Bestelltabelle eine Zeile hinzu und verknüpfen Sie sie mit der Kunden-ID.

(4) Rufen Sie die neue Bestell-ID ab, die in der Bestelltabelle angegeben ist.

(5) Fügen Sie für jeden bestellten Artikel eine Zeile zur Tabelle „orderitems“ hinzu und verknüpfen Sie sie mit der Tabelle „Orders“, indem Sie die ID von

abrufen (und verknüpfen Sie sie mit der Tabelle „products“ über das Produkt). AUSWEIS).

Angenommen, ein Datenbankfehler (z. B. Speicherplatzüberschreitung, Sicherheitsgrenzen, Tabellensperren usw.) verhindert, dass dieser Vorgang abgeschlossen wird. Was passiert mit den Daten in der Datenbank?

Wenn der Fehler auftritt, nachdem der Kunde hinzugefügt wurde, aber bevor die Bestelltabelle hinzugefügt wurde, liegt kein Problem vor. Für einige Kunden ist es völlig legal, keine Bestellungen aufzugeben. Wenn der Vorgang erneut ausgeführt wird, wird der eingefügte Kundendatensatz abgerufen und verwendet. Sie können den Prozess effektiv dort beginnen, wo ein Fehler aufgetreten ist.

Was aber, wenn der Fehler auftritt, nachdem die Zeile „Orders“ hinzugefügt wurde, aber bevor die Zeile „Orderitems“ hinzugefügt wurde? Jetzt gibt es eine leere Bestellung in der Datenbank.

Noch schlimmer ist es, wenn das System mitten beim Hinzufügen der orderitems-Zeile ausfällt. Die Folge ist, dass unvollständige Bestellungen in der Datenbank vorhanden sind und Sie nichts davon wissen.

Wie kann dieses Problem gelöst werden? Hier müssen Sie die Transaktionsverarbeitung verwenden. Die Transaktionsverarbeitung ist ein Mechanismus zur Verwaltung von MySQL-Vorgängen, die stapelweise ausgeführt werden müssen, um sicherzustellen, dass die Datenbank keine unvollständigen

Vorgangsergebnisse enthält. Mit der Transaktionsverarbeitung können Sie garantieren, dass eine Reihe von Vorgängen nicht auf halbem Weg gestoppt werden und dass sie entweder als Ganzes oder überhaupt nicht ausgeführt werden (es sei denn, Sie werden ausdrücklich dazu angewiesen). Wenn keine Fehler auftreten, wird der gesamte Satz von Anweisungen in die Datenbanktabelle übernommen (geschrieben). Wenn ein Fehler auftritt, führen Sie einen Rollback (Rückgängigmachen) durch, um die Datenbank in einem bekannten und sicheren Zustand wiederherzustellen. Schauen Sie sich also dasselbe Beispiel an. Dieses Mal veranschaulichen wir, wie der Prozess funktioniert.

(1) Überprüfen Sie, ob der entsprechende Kunde in der Datenbank vorhanden ist. Wenn nicht, fügen Sie ihn hinzu.

(2) Kundeninformationen übermitteln.

(3) Rufen Sie die ID des Kunden ab.

(4) Fügen Sie der Auftragstabelle eine Zeile hinzu.

(5) Fallback, wenn beim Hinzufügen von Zeilen zur Auftragstabelle ein Fehler auftritt.

(6) Rufen Sie die neue Bestell-ID ab, die in der Bestelltabelle angegeben ist.

(7) Fügen Sie für jeden bestellten Artikel eine neue Zeile zur Tabelle „Orderitems“ hinzu.

(8) Wenn beim Hinzufügen neuer Zeilen zu „orderitems“ ein Fehler auftritt, setzen Sie alle hinzugefügten „orderitems“- und „Orders“-Zeilen zurück.

(9) Bestellinformationen übermitteln.

Bei der Verwendung von Transaktionen und der Transaktionsverarbeitung tauchen mehrere Schlüsselwörter immer wieder auf. Die folgenden Begriffe müssen Sie über die Transaktionsverarbeitung kennen:

1. Transaktion bezieht sich auf eine Reihe von SQL-Anweisungen.

2 bis Der Vorgang des Rückgängigmachens der angegebenen SQL-Anweisung bezieht sich auf das Schreiben der nicht gespeicherten SQL-Anweisungsergebnisse in die Datenbanktabelle.

4 Einstellung in der Transaktionsverarbeitung Ein temporärer Platzhalter, für den Sie ein Rollback veranlassen können (im Gegensatz zum Rollback der gesamten Transaktion).

[Verwandte Empfehlungen]

1.

MySQL-kostenloses Video-Tutorial

2.

MySQL UPDATE-Trigger (Update) und Trigger-Tiefenanalyse

3.

Detaillierte Erläuterung der Verwendung des Löschtriggers (delete) in MySQL

4.

Detaillierte Erläuterung des Einfügetriggers (insert) in MySQL

5.

Einführung in MySQL-Trigger und wie man Trigger erstellt und löscht

Das obige ist der detaillierte Inhalt vonBeispiele für die MySQL-Transaktionsverarbeitung erklärt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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