Die Anweisung `COMMIT` wird in MySQL verwendet, um alle Änderungen, die während der aktuellen Transaktion vorgenommen wurden, dauerhaft zu speichern. Er schließt die Transaktion ab und macht alle Änderungen für andere Benutzer und Sitzungen verfügbar.
Verwendung
Die Anweisung `COMMIT` wird normalerweise nach einer Reihe von `INSERT`-, `UPDATE`- oder `DELETE`-Operationen verwendet, um sicherzustellen, dass die Änderungen in der Datenbank gespeichert werden. Im Transaktionsmanagement ist es wichtig, die Datenintegrität zu gewährleisten.
Diese Syntax bestätigt, dass alle Änderungen in der aktuellen Transaktion gespeichert werden und nicht rückgängig gemacht werden können. Beachte, dass `COMMIT` nur in Storage Engines anwendbar ist, die Transaktionen unterstützen, wie z.B. InnoDB. Sie ist nicht anwendbar auf nicht-transaktionale Speicher-Engines wie MyISAM.
Beispiele
1. Basistransaktion Commit
STARTTRANSACTION;INSERTINTOaccounts(name, balance)VALUES('John Doe',1000);COMMIT;Bereitgestellt von
In diesem Beispiel wird ein neues Konto hinzugefügt und die Änderung mit `COMMIT` gespeichert, um die Transaktion abzuschließen.
2. Mehrere Änderungen festschreiben
STARTTRANSACTION;UPDATE accounts SET balance = balance -100WHERE name ='John Doe';UPDATE accounts SET balance = balance +100WHERE name ='Jane Smith';COMMIT;Bereitgestellt von
In diesem Beispiel werden Gelder zwischen zwei Konten übertragen. Beide Aktualisierungen werden zusammen mit einem einzigen `COMMIT` abgeschlossen, um die Atomizität zu gewährleisten.
3. Bedingtes Commit mit Fehlerbehandlung
Um bedingte Übertragungen und Fehlererkennung zu handhaben, verwende Anwendungslogik oder gespeicherte Prozeduren. Direkte `IF`-Anweisungen in SQL-Skripten werden nicht unterstützt. Hier ist ein Beispiel mit einer gespeicherten Prozedur:
DELIMITER//CREATEPROCEDUREConditionalCommit()BEGINDECLARE order_exists INT;STARTTRANSACTION;DELETEFROM orders WHERE order_id =101;SELECTCOUNT(*)INTO order_exists FROM orders WHERE order_id =101;IF order_exists =0THENCOMMIT;ELSEROLLBACK;ENDIF;END//DELIMITER;Bereitgestellt von
In diesem Beispiel prüft eine Prozedur, ob die Auftragslöschung erfolgreich ist, bevor sie bestätigt wird.
Tipps und bewährte Praktiken
Kombiniere mit `START TRANSACTION`. Verwende `COMMIT` mit `START TRANSACTION`, um sicherzustellen, dass Änderungen Teil einer Transaktion sind.
Behandle Fehler mit `ROLLBACK`. Mach Änderungen vor dem Festschreiben rückgängig, wenn Fehler auftreten.
Achte auf die Konsistenz von Transaktionen und schließe alle notwendigen Vorgänge innerhalb einer Transaktion ab, bevor du sie festlegst.
Minimiere die Transaktionsdauer, um Sperren zu reduzieren und die Leistung zu verbessern.
Teste, bevor du dich verpflichtest, um sicherzustellen, dass alle Änderungen deinen Anforderungen entsprechen.
Zusätzliche Anmerkung
Ein `COMMIT` ohne ein vorangehendes `START TRANSACTION` hat keine Auswirkungen, da keine Änderungen abgeschlossen werden müssen. Achte immer darauf, dass "START TRANSACTION" verwendet wird, um eine Transaktion einzuleiten.
Die Anweisung `COMMIT` wird in MySQL verwendet, um alle Änderungen, die während der aktuellen Transaktion vorgenommen wurden, dauerhaft zu speichern. Er schließt die Transaktion ab und macht alle Änderungen für andere Benutzer und Sitzungen verfügbar.
Verwendung
Die Anweisung `COMMIT` wird normalerweise nach einer Reihe von `INSERT`-, `UPDATE`- oder `DELETE`-Operationen verwendet, um sicherzustellen, dass die Änderungen in der Datenbank gespeichert werden. Im Transaktionsmanagement ist es wichtig, die Datenintegrität zu gewährleisten.
Diese Syntax bestätigt, dass alle Änderungen in der aktuellen Transaktion gespeichert werden und nicht rückgängig gemacht werden können. Beachte, dass `COMMIT` nur in Storage Engines anwendbar ist, die Transaktionen unterstützen, wie z.B. InnoDB. Sie ist nicht anwendbar auf nicht-transaktionale Speicher-Engines wie MyISAM.
Beispiele
1. Basistransaktion Commit
In diesem Beispiel wird ein neues Konto hinzugefügt und die Änderung mit `COMMIT` gespeichert, um die Transaktion abzuschließen.
2. Mehrere Änderungen festschreiben
In diesem Beispiel werden Gelder zwischen zwei Konten übertragen. Beide Aktualisierungen werden zusammen mit einem einzigen `COMMIT` abgeschlossen, um die Atomizität zu gewährleisten.
3. Bedingtes Commit mit Fehlerbehandlung
Um bedingte Übertragungen und Fehlererkennung zu handhaben, verwende Anwendungslogik oder gespeicherte Prozeduren. Direkte `IF`-Anweisungen in SQL-Skripten werden nicht unterstützt. Hier ist ein Beispiel mit einer gespeicherten Prozedur:
In diesem Beispiel prüft eine Prozedur, ob die Auftragslöschung erfolgreich ist, bevor sie bestätigt wird.
Tipps und bewährte Praktiken
Zusätzliche Anmerkung
Ein `COMMIT` ohne ein vorangehendes `START TRANSACTION` hat keine Auswirkungen, da keine Änderungen abgeschlossen werden müssen. Achte immer darauf, dass "START TRANSACTION" verwendet wird, um eine Transaktion einzuleiten.