Heim > Datenbank > MySQL-Tutorial > Führt SQL Server bei Fehlern in Batch-Befehlen ein Rollback ganzer Transaktionen durch?

Führt SQL Server bei Fehlern in Batch-Befehlen ein Rollback ganzer Transaktionen durch?

Barbara Streisand
Freigeben: 2025-01-10 22:35:44
Original
212 Leute haben es durchsucht

Does SQL Server Roll Back Entire Transactions on Error in Batched Commands?

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage