2012-02-17 7 views

risposta

18

Sì.

Fintanto che il trigger viene attivato come parte della transazione, anche eventuali modifiche apportate all'interno del database potrebbero essere ripristinate.

Nitpick: un trigger è un trigger, non viene eseguito il rollback. Saranno gli effetti del trigger.

3

OK, una transazione reale che viene ripristinata al momento dell'inserimento/aggiornamento/eliminazione comporta anche il rollback di qualsiasi azione eseguita dal trigger. Tuttavia, se si sta eseguendo più di un'azione in una transazione, l'elaborazione della transazione dovrebbe essere esplicita nel codice affinché il rollback si verifichi in azioni precedenti.

Quindi se elimino da tabella1 e il trigger si attiva e quindi la transazione non riesce, tutto è rollback.

Se si elimina dalla tabella 1 e il trigger si attiva e si elimina da table2 come parte dello stesso script o stored proc o dynamicSQL inviato dall'applicazione, potrebbero verificarsi due cose. Se si dispone di una transazione esplicita formale (che gestisce correttamente gli errori), viene eseguito il rollback di tutto ciò che accade, comprese le azioni di trigger, se ci si basa su una transazione implicita (che esegue solo il rollback dell'ultima azione), quindi non cambierà nulla prima del parte che non ha funzionato.

Problemi correlati