Quote Originariamente inviata da abellos Visualizza il messaggio
.... già dopo il primo commit ...
Questo passaggio mi fa capire che non mi sono spiegato bene.

Ogni begin transaction vuole un solo commit, o, in caso di errore, un solo rollback

Quindi, inizia la transazione e fa' il tuo ciclo. Se, all'interno del ciclo, trovi un errore, fai rollback ed esci dal ciclo. Se alla fine del ciclo non hai avuto errori, fai la commit.

A questo punto ti devi chiedere se serve davvero usare le transazioni, che servono per fare una serie di operazioni sul db che debbono TUTTE andare a buon fine ASSIEME: se solo una delle N operazioni va in errore, con la rollback riporti tutto a com'era prima di cominciare.

Se non hai questa esigenza, semplicemente NON usare le transazioni, che sono comunque una fonte di stress per il db (durante la transazione, operi su una sorta di db parallelo/temporaneo, invisibile agli altri utenti).

Spero di essermi spiegato, in caso contrario chiedi.