SQL Server-Transaktionsverarbeitung: Fehler-Rollback-Verhalten
Berücksichtigen Sie unbedingt das Transaktionsverhalten Ihrer Datenbank, wenn Sie mehrere SQL-Anweisungen als einen einzigen Batch-Befehl ausführen. Sollte insbesondere die gesamte Transaktion zurückgesetzt werden, wenn bei einer oder mehreren Anweisungen ein Fehler auftritt?
In SQL Server besteht das Standardverhalten darin, bei jedem Fehler die gesamte Transaktion zurückzusetzen. In einigen Fällen jedoch (z. B. im Beispiel in der Frage):
<code class="language-sql">BEGIN TRAN; INSERT INTO myTable (myColumns ...) VALUES (myValues ...); INSERT INTO myTable (myColumns ...) VALUES (myValues ...); INSERT INTO myTable (myColumns ...) VALUES (myValues ...); COMMIT TRAN;</code>
Wenn die SQL-Anweisung als einzelner String-Befehl gesendet wird, ist das Rollback-Verhalten möglicherweise nicht wie erwartet.
Um sicherzustellen, dass fehlgeschlagene Anweisungen automatisch einen Rollback auslösen, können Sie die Anweisung SET XACT_ABORT ON
verwenden, bevor Sie die Transaktion starten. Dieser Befehl ändert das Transaktionsverhalten der Sitzung, sodass jeder auftretende Fehler sofort dazu führt, dass die Transaktion zurückgesetzt wird. In diesem Fall wird der Einfügevorgang rückgängig gemacht und die Transaktion wird nicht erfolgreich abgeschlossen.
Durch die explizite Einstellung von XACT_ABORT ON
wird garantiert, dass sich die Datenbank beim Auftreten von Fehlern konsistent verhält, wodurch die Datenintegrität gewährleistet und versehentliche Änderungen verhindert werden. Beachten Sie, dass diese Einstellung nur für die aktuelle Sitzung gilt und keine Auswirkungen auf nachfolgende Transaktionen hat.
Das obige ist der detaillierte Inhalt vonFührt SQL Server bei Fehlern in Batch-Befehlen ein Rollback ganzer Transaktionen durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!