Ich habe nie verstanden, was eine verschachtelte Transaktion gut ist. Beim Übergeben einer verschachtelten Transaktion wird nichts übernommen - es wird nur @@TRANCOUNT
verringert. Und ROLLBACK
Rollbacks alles.Zweck der verschachtelten Transaktionen
BEGIN TRANSACTION
//do an update
BEGIN TRANSACTION
//do an insert
COMMIT TRANSACTION
COMMIT TRANSACTION
Was ist der Unterschied dabei ist:
BEGIN TRANSACTION
//do an update
//do an insert
COMMIT TRANSACTION
Bitte geben Sie mir ein Beispiel, warum verschachtelte Transaktionen verwendet werden sollen und wie sie einen Unterschied machen.
Grüße, Petar
Ich kann Safepoints ohne verschachtelte Transaktionen verwenden. Die gespeicherte Prozedur ist ein guter Punkt (ich habe nie darüber nachgedacht). Aber wenn ich keine gespeicherte Prozedur in meiner Transaktion verwende (oder keinen anderen Code aufrufen), warum sollte ich geschachtelte Transaktionen benötigen? Ich sehe ständig Beispiele mit verschachtelten Transaktionen und ich sehe nicht den Sinn von ihnen. –
Sind verschachtelte Transaktionen nur beim Aufrufen von externem Transaktionscode nützlich? –
Ich stimme Ihnen zu und ich denke, dass sie nützlich sind, um externen Transaktionscode aufzurufen. Die technische Fähigkeit von SQL Server, verschachtelte Transaktionen zu verarbeiten, ist wichtig und nicht in allen DB-Systemen verfügbar. Es gibt einige Fälle (z. B. mit den erwähnten SPs - wo Sie auch [SET XACT_ABORT ON] verwenden sollten (http://stackoverflow.com/questions/1150032/what-is-the-benefit-of-using-set) -xact-abort-on-in-stored-procedure)), wo sie "natürlich" verschachteln können. Ich habe auch nie explizit verschachtelte Transaktionen verwendet. – Lucero