Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Automatisches Rollback, wenn COMMIT TRANSACTION nicht erreicht wird

Nein, Transaktionen werden nicht zurückgesetzt, sobald ein Fehler auftritt. Möglicherweise verwenden Sie jedoch eine Client-Anwendung, die diese Richtlinie anwendet.

Wenn Sie beispielsweise den mysql-Befehlszeilenclient verwenden, stoppt er normalerweise die Ausführung, wenn ein Fehler auftritt, und wird beendet. Das Beenden einer laufenden Transaktion führt zu einem Rollback.

Wenn Sie Ihre eigene Anwendung schreiben, können Sie die Rollback-Richtlinie steuern, aber es gibt einige Ausnahmen:

  • Das Beenden (d. h. das Trennen von der Datenbank) setzt eine laufende Transaktion immer zurück
  • Ein Deadlock oder ein Lock-Wait-Timeout führt implizit zu einem Rollback

Abgesehen von diesen Bedingungen, wenn Sie einen Befehl aufrufen, der einen Fehler generiert, wird der Fehler normal zurückgegeben, und Sie können tun, was Sie wollen, einschließlich des Festschreibens der Transaktion trotzdem.