2010-05-04 4 views

risposta

16

Si dovrebbe google prima di chiedere.

Tronca

  1. Tronca rimuove tutti i riferimenti dal database.
  2. Fast
  3. Nessuna voce nel registro delle transazioni.
  4. Non può essere ripristinato se rimosso una volta.
  5. I rifrimenti delle pagine vengono cancellati.
  6. Tutti o nessuno
  7. colonna Identity viene re-inizializzato a seme
  8. Tronca è DDL

troncare la tabella tblName

No contidion può essere dato

Elimina

  1. Le voci vengono registrate nel registro delle transazioni.
  2. recuperabile
  3. lento
  4. Per record in base eliminazione
  5. riferimenti sono mainained nella pagina
  6. Identità parte dalla sua precedente posizione di
  7. DML
Delete FROM tableName 

Nessuno dei due effetti struttura nella tabella. Tutti i riferimenti devono essere rimossi prima di eseguire qualsiasi dell'operazione, anche se non si applica eliminare quando utilizzato con Cascade = true per cancellare

+2

Giusto. Troncare è DDL, Elimina è DML. – Konerak

+0

e le strutture delle tabelle? –

+0

non esitate a nuovo al server sql e anche al discente. –

0

La differenza tra troncare ed eliminare sono indicati qui di seguito:

+----------------------------------------+----------------------------------------------+ 
|    Truncate    |     Delete     | 
+----------------------------------------+----------------------------------------------+ 
| We can't Rollback after performing  | We can Rollback after delete.    | 
| Truncate.        |            | 
|          |            | 
| Example:        | Example:          | 
| BEGIN TRAN        | BEGIN TRAN         | 
| TRUNCATE TABLE tranTest    | DELETE FROM tranTest       | 
| SELECT * FROM tranTest     | SELECT * FROM tranTest      | 
| ROLLBACK        | ROLLBACK          | 
| SELECT * FROM tranTest     | SELECT * FROM tranTest      | 
+----------------------------------------+----------------------------------------------+ 
| Truncate reset identity of table.  | Truncate reset identity of table.   | 
+----------------------------------------+----------------------------------------------+ 
| It locks the entire table.    | It locks the table row.      | 
+----------------------------------------+----------------------------------------------+ 
| Its DDL(Data Definition Language)  | Its DML(Data Manipulation Language)   | 
| command.        | command.          | 
+----------------------------------------+----------------------------------------------+ 
| We can't use WHERE clause with it.  | We can use WHERE to filter data to delete. | 
+----------------------------------------+----------------------------------------------+ 
| Trigger is not fired while truncate. | Trigger is fired.       | 
+----------------------------------------+----------------------------------------------+ 
| Syntax :        | Syntax :          | 
| 1) TRUNCATE TABLE table_name   | 1) DELETE FROM table_name     | 
|          | 2) DELETE FROM table_name WHERE    | 
|          | example_column_id IN (1,2,3)    | 
+----------------------------------------+----------------------------------------------+ 
0

Mentre lavoriamo al database, stiamo usando Delete e Truncate senza conoscere le differenze tra loro e quando usarli. In questo articolo discuteremo la differenza tra Delete e Truncate in Sql.

Elimina Elimina è un comando DML. L'istruzione di cancellazione viene eseguita utilizzando un blocco di riga, ogni riga della tabella è bloccata per l'eliminazione. Possiamo specificare i filtri nella clausola where. Elimina i dati specificati se esiste una condizione. Elimina attività un trigger perché l'operazione viene registrata individualmente. Più lento del Tronca perché mantiene i registri Tronca Troncamento è un comando DDL. La tabella troncata blocca sempre la tabella e la pagina ma non tutte le righe. Poiché rimuove tutti i dati. Impossibile utilizzare la condizione Dove. Elimina tutti i dati. La tabella troncata non può attivare un trigger perché l'operazione non registra singole eliminazioni di righe. Più veloce in termini di prestazioni, perché non mantiene alcun registro. Nota Eliminare e troncare entrambi possono essere ripristinati quando utilizzati con Transazione. Se Transaction è terminato, significa commit non è possibile eseguire il rollback del comando Truncate dai file di log, ma è ancora possibile eseguire il rollback del comando Delete dai file di log, poiché delete write li registra nel file di log nel caso in cui sia necessario eseguire il rollback in futuro dai file di log .

Se si dispone di un vincolo di chiave esterna riferito alla tabella che si sta tentando di troncare, ciò non funzionerà anche se la tabella di riferimento non contiene dati. Questo perché il controllo della chiave esterna viene eseguito con DDL anziché con DML. Questo può essere risolto disattivando temporaneamente i vincoli della chiave esterna alla tabella.

La tabella di eliminazione è un'operazione registrata. Quindi la cancellazione di ogni riga viene registrata nel log delle transazioni, il che lo rende lento. La tabella troncata elimina anche tutte le righe in una tabella, ma non registra la cancellazione di ogni riga, ma registra la deallocazione delle pagine di dati della tabella, il che rende più veloce.

~ Se accidentalmente hai rimosso tutti i dati dalla tabella utilizzando Elimina/Tronca. È possibile eseguire il rollback della transazione confermata. Ripristina l'ultimo backup ed esegui il log delle transazioni fino al momento in cui Delete/Truncate sta per accadere.

controllare questo articolo Ripristino Tabella dopo Tronca comandi in SQL o

difference-between-delete-truncate-in

vedono anche when-to-use-truncate-and-delete-command

Problemi correlati