Scusa, ancora una volta non mi sono spiegato bene:
- a BD pulita le due insert vanno tranquillamente a buon fine
- a questo punto vado in BD e tolgo la riga inserita con la prima insert
- rieseguo; la prima insert va a buon fine, ma la seconda trova la chiave duplicata (la chiave è la colonna "codice" per ambedue le tabelle);
- l'esecuzione procede nel blocco catch incontrando la rollback(). Peccato che andando in BD ritrovo la riga che avevo cancellato nella tabella 1 e che non dovrei trovare per effetto della rollback()
A complicare il tutto ti dico che se a BD pulita metto una rollback() al posto della commit(), in BD non trovo niente ed è giusto che sia così. Il problema sembra essere che non appena si lascia il blocco try c'è una commit non voluta.
Saluti e grazie ancora

Rispondi quotando