Come eseguire il rollback del comando di eliminazione senza utilizzare la transazione? se non possiamo, allora qual è la differenza tra Truncate & eliminare?Come eseguire il rollback del comando di eliminazione senza utilizzare la transazione
risposta
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
.
È 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.
Se sta usando un ** modello di recupero completo **, allora potrebbe tornare indietro al database prima che il comando di cancellazione fosse emesso. –
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.
Di quale piattaforma stiamo parlando qui? –
informazioni non sufficienti fornite. – bot
sto scrivendo il codice in SQL Server 2012. –