2013-03-18 17 views

risposta

2

Non è possibile eseguire un'operazione ROLLBACK senza una transazione. Probabilmente potresti usare implicit transactions, ma devi comunque chiamare lo COMMIT o ROLLBACK esplicitamente. Tuttavia, per un controllo migliore, è preferibile inserire le istruzioni in un blocco BEGIN TRANSACTION...COMMIT/ROLLBACK. In questo modo eviterete qualsiasi confusione e la necessità di utilizzare l'impostazione IMPLICIT_TRANSACTION.

2

È possibile eseguire il rollback di DELETE o TRUNCATE (e della maggior parte delle altre operazioni) se e solo se fanno parte di una transazione non ancora impegnata. In alternativa è possibile ripristinare i dati cancellati/troncati da un backup.

Esistono diverse differenze tra TRUNCATE e DELETE. In particolare TRUNCATE può solo svuotare una tabella mentre CANCELLA cancella solo le righe specificate. TRUNCATE rilascia e registra i dati a livello di pagina anziché a livello di riga, il che in genere rende TRUNCATE un metodo più efficiente di DELETE per l'eliminazione dell'intero contenuto di una tabella.

+2

Se sta usando un ** modello di recupero completo **, allora potrebbe tornare indietro al database prima che il comando di cancellazione fosse emesso. –

3

In questo caso non è possibile eseguire il rollback, ma quando si utilizza il modello di recupero completo , è possibile ripristinare il database al momento precedente all'emissione del comando di eliminazione.

Problemi correlati