Ricerca…


introduzione

L'istruzione TRUNCATE elimina tutti i dati da una tabella. È simile a DELETE senza filtro, ma, a seconda del software del database, presenta alcune restrizioni e ottimizzazioni.

Sintassi

  • TRUNCATE TABLE nome_tabella;

Osservazioni

TRUNCATE è un comando DDL (Data Definition Language) e, come tale, esistono differenze significative tra esso e DELETE (un linguaggio di manipolazione dei dati, DML, comando). Mentre TRUNCATE può essere un mezzo per rimuovere rapidamente grandi volumi di record da un database, queste differenze dovrebbero essere comprese al fine di decidere se l'uso di un comando TRUNCATE è adatto alla tua particolare situazione.

  • TRUNCATE è un'operazione di pagina di dati. Pertanto i trigger DML (ON DELETE) associati alla tabella non si attivano quando si esegue un'operazione TRUNCATE. Mentre questo farà risparmiare un sacco di tempo per le massicce operazioni di cancellazione, tuttavia potrebbe essere necessario eliminare manualmente i dati correlati.
  • TRUNCATE rilascerà lo spazio su disco utilizzato dalle righe eliminate, DELETE rilascerà spazio
  • Se la tabella da troncare utilizza colonne Identity (MS SQL Server), il seed viene resettato dal comando TRUNCATE. Ciò potrebbe causare problemi di integrità referenziale
  • A seconda dei ruoli di sicurezza esistenti e della variante di SQL in uso, è possibile che non si disponga delle autorizzazioni necessarie per eseguire un comando TRUNCATE

Rimozione di tutte le righe dalla tabella Impiegato

TRUNCATE TABLE Employee;

Utilizzare la tabella troncata è spesso meglio quindi utilizzare DELETE TABLE poiché ignora tutti gli indici e i trigger e rimuove semplicemente tutto.

Elimina tabella è un'operazione basata su righe, ciò significa che ogni riga viene eliminata. Tronca tabella è un'operazione di una pagina di dati l'intera pagina di dati viene riallocata. Se si dispone di una tabella con un milione di righe, sarà molto più veloce troncare la tabella di quanto non sarebbe utilizzare un'istruzione di tabella di eliminazione.

Sebbene possiamo eliminare righe specifiche con DELETE, non possiamo TRONCARE righe specifiche, possiamo solo TRONCARE tutti i record contemporaneamente. Eliminando Tutte le righe e quindi inserendo un nuovo record, si continuerà ad aggiungere il valore della chiave primaria incrementale Auto dal valore precedentemente inserito, dove, come in Tronca, anche il valore della chiave primaria Incrementale automatica verrà ripristinato e verrà avviato da 1.

Si noti che quando si tronca una tabella, non devono essere presenti chiavi esterne , altrimenti si otterrà un errore.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow