USE AdventureWorks;
GO
BEGIN TRANSACTION;
GO
DELETE FROM HumanResources.JobCandidate WHERE JobCandidateID = 10;
DELETE FROM HumanResources.JobCandidate WHERE JobCandidateID = 11;
DELETE FROM HumanResources.JobCandidate WHERE JobCandidateID = 12;
GO
COMMIT TRANSACTION;
GO
Was passiert, wenn die erste Löschanweisung fehlschlägt? Werden die 2. und 3. Löschanweisung ausgeführt? Das Beispiel hat keine Fehlerbehandlung, wird eine offene Transaktion im Falle einer Ausnahme verlassen oder führt SQL Server die Transaktion automatisch zurück? Offene Transaktion = gesperrte Ressourcen, oder?Ist ROLLBACK TRANSACTION erforderlich?
Ich entscheide, ob ich TRY ... CATCH auf gespeicherte Prozeduren anwenden muss, die Transaktionen verwenden.
Ich bin über set xact_abort on
bewusst, möchte aber wissen, was ohne es passiert. Hier
ist, was ich in docs gefunden - Controlling Transaktionen (Database Engine):
Wenn ein Fehler, den erfolgreichen Abschluss einer Transaktion verhindert, SQL Server rollt automatisch die Transaktion zurück und gibt alle von der gehaltenen Ressourcen Transaktion
Allerdings habe ich in anderen Posts gelesen, dass das automatische Rollback nicht ausgelöst wird.
Ja, verwenden Sie versuchen ... fangen. – Ben