Esistono due metodi in SQL per le tabelle del database vuoti . Una è la funzione "CANCELLA" e l'altro è " TRUNCATE . " Sia preservare l'integrità del tavolo si svuota , ma ognuno si differenzia per i meccanismi utilizzati per rimuovere i record , in particolare per quanto riguarda le modalità di funzionamento , ripristino dei dati , velocità e utilizzo delle risorse . La funzione " Delete" è classificato come un linguaggio di manipolazione dei dati ( DML ) , mentre la funzione " TRUNCATE " appartiene alla famiglia di funzioni che si occupano di Data Definition Language ( DDL ) . Modalità di funzionamento
L'operazione " TRUNCATE " è un approccio tutto-o- niente che dealloca spazio su disco riservato per i dati nella tabella . L'operazione rimuove anche riferimenti a indici. I dati continua ad esistere nella tabella fino a quando non viene sovrascritto da nuovi dati . Al contrario , l'operazione " DELETE " rimuove un record alla volta , registrando i dettagli di ciascun record in un log delle transazioni prima della sua rimozione. L'operazione " DELETE" richiede di essere il commit della transazione , mentre una " TRUNCATE " impegna implicitamente la transazione . Una dichiarazione " DELETE" consente inoltre all'utente di rimuovere in modo condizionale i record che soddisfano determinati criteri .
Data Recovery
Un'operazione " TRUNCATE " elimina i dati da un tabella senza salvare alcuna informazione rollback . Una volta che il comando viene eseguito , il recupero non è possibile se lo spazio precedentemente assegnato i dati sono stati sovrascritti con i nuovi dati. Viceversa , rollback a uno stato precedente, in un'operazione " DELETE" può verificarsi perché ogni record è impegnata per la tablespace di rollback prima della sua rimozione. I dati mancanti possono essere recuperati dai log di rollback , a condizione che i registri esistono ancora .
Velocità e dell'utilizzo delle risorse
L'operazione " TRUNCATE " è una operazione di eliminazione ad alta velocità che richiede poche risorse di database a causa del modo in cui esegue il tutto -o-niente funzioni di eliminazione . operazioni "Elimina " a grandi volumi di dati , d'altra parte , può richiedere molto tempo a causa del problema della registrazione di una riga alla volta nel tablespace di rollback . Di conseguenza , la dimensione fisica delle tabelle coinvolte potrebbe palloncino prima della rimozione di record ridurre la tabella in una dimensione accettabile .
Eccezioni relative vincoli referenziali
" , TRUNCATE "operazioni possono avvenire solo se tutti i vincoli di chiave esterna vengono rimossi o disattivati prima della sua esecuzione . La stessa regola vale per "CANCELLA " operazioni . Ciò è dovuto alla regola imposta su basi di dati per definire le relazioni di chiave primaria e stranieri e che specifica che "nessuna chiave esterna deve penzolare . " Quindi, " TRUNCATE " e operazioni "Elimina" non riesce se non vi è una chiave primaria /vincolo di chiave esterna in luogo .