Heim  >  Artikel  >  Datenbank  >  MySQL-Transaktions-ROLLBACK, detaillierte Erläuterung der COMMIT-Nutzung

MySQL-Transaktions-ROLLBACK, detaillierte Erläuterung der COMMIT-Nutzung

巴扎黑
巴扎黑Original
2017-05-19 15:19:044218Durchsuche

ROLLBACK verwenden

Da wir nun wissen, was Transaktionsverarbeitung ist, besprechen wir die Probleme, die mit der Verwaltung der Transaktionsverarbeitung verbunden sind.

Der Schlüssel zur Verwaltung der Transaktionsverarbeitung besteht darin, Gruppen von SQL-Anweisungen in logische Blöcke zu unterteilen und klar anzugeben, wann Daten zurückgesetzt werden sollen und wann nicht.

MySQL verwendet die folgende Anweisung, um den Beginn einer Transaktion zu identifizieren:

Eingabe:

start transaction

Der ROLLBACK-Befehl von MySQL wird verwendet, um die MySQL-Anweisung rückgängig zu machen (rückgängig zu machen). , siehe unten. Anweisung:

Eingabe:

select * from ordertotals;
start transaction;
delete from ordertotals;
select * from ordertotals;
rollback;
select * from ordertotals;

Analyse: Dieses Beispiel beginnt mit der Anzeige des Inhalts der Tabelle „ordertotals“. Führen Sie zunächst ein SELECT aus, um anzuzeigen, dass die Tabelle nicht leer ist. Starten Sie dann eine Transaktion und löschen Sie alle Zeilen in ordertotals mit einer DELETE-Anweisung. Eine weitere SELECT-Anweisung überprüft, ob ordertotals tatsächlich leer ist. Zu diesem Zeitpunkt wird eine ROLLBACK-Anweisung verwendet, um alle Anweisungen nach START TRANSACTION zurückzusetzen, und die letzte SELECT-Anweisung zeigt, dass die Tabelle nicht leer ist.

ROLLBACK kann natürlich nur innerhalb einer Transaktion verwendet werden (nach Ausführung eines START TRANSACTION-Befehls).

Welche Aussagen können rückgängig gemacht werden? Transaktionen werden zum Verwalten von INSERT-, UPDATE- und DELETE-Anweisungen verwendet. Sie können eine SELECT-Anweisung nicht zurücksetzen. (Es hat auch wenig Sinn, dies zu tun.) Sie können einen CREATE- oder DROP-Vorgang nicht rückgängig machen. Diese beiden Anweisungen können innerhalb eines Transaktionsblocks verwendet werden, sie werden jedoch nicht rückgängig gemacht, wenn Sie ein Rollback durchführen.


Verwenden Sie COMMIT

Allgemeine MySQL-Anweisungen werden direkt in Datenbanktabellen ausgeführt und geschrieben. Dies ist das sogenannte implizite Commit, das heißt, der Commit-Vorgang (Schreiben oder Speichern) wird automatisch ausgeführt. Innerhalb eines Transaktionsblocks erfolgen Commits jedoch nicht implizit. Um ein explizites Commit durchzuführen, verwenden Sie die COMMIT-Anweisung wie folgt:

Eingabe:

start transaction;
delete from orderitems where order_num = 20010;
delete from orders where order_num = 20010;
commit;

Analyse: In diesem Beispiel wird die Bestellung 20010 vollständig aus dem System entfernt. Da dabei zwei Datenbanktabellen, „orders“ und „orderItems“, aktualisiert werden müssen, wird ein Transaktionsblock verwendet, um sicherzustellen, dass Bestellungen nicht teilweise gelöscht werden. Die abschließende COMMIT-Anweisung schreibt nur die Änderungen ohne Fehler aus. Wenn der erste DELETE-Vorgang funktioniert, der zweite jedoch fehlschlägt, wird der DELETE-Vorgang nicht festgeschrieben (tatsächlich wird er automatisch widerrufen).

Impliziter Transaktionsabschluss Wenn eine COMMIT- oder ROLLBACK-Anweisung ausgeführt wird, wird die Transaktion automatisch geschlossen (zukünftige Änderungen werden implizit festgeschrieben).

[Verwandte Empfehlungen]

1. kostenloses MySQL-Video-Tutorial

2.Beispielerklärung zur MySQL-Transaktionsverarbeitung

3. MySQL UPDATE-Trigger (Update) und eingehende Analyse der Trigger

4. Detaillierte Erläuterung der Verwendung des MySQL-Löschtriggers (Löschen)

5. Detaillierte Erläuterung des Einfügetriggers (Einfügung) in MySQL

Das obige ist der detaillierte Inhalt vonMySQL-Transaktions-ROLLBACK, detaillierte Erläuterung der COMMIT-Nutzung. 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