Quelle est la différence entre TRUNCATE et DELETE dans SQL

J’ai écrit une réponse à cette question par erreur en réponse à une question sur la différence entre DROP et TRUNCATE , mais je pensais que c’était dommage de ne pas partager alors je posterais ma propre réponse à ma propre question … est-ce que même éthique? 🙂

Edit: Si votre réponse est spécifique à la plate-forme, pouvez-vous s’il vous plaît l’indiquer.

Voici une liste de différences. J’ai mis en évidence des fonctionnalités spécifiques à Oracle et j’espère que la communauté pourra append la différence spécifique des autres fournisseurs. Les différences communes à la plupart des fournisseurs peuvent aller directement au-dessous des rubriques, les différences étant soulignées ci-dessous.


Aperçu général

Si vous voulez supprimer rapidement toutes les lignes d’une table et que vous êtes vraiment sûr de vouloir le faire, et que vous n’avez pas de clé étrangère dans les tables, alors TRUNCATE sera probablement plus rapide qu’une DELETE. .

Divers problèmes spécifiques au système doivent être pris en compte, comme indiqué ci-dessous.


Type de déclaration

Supprimer est DML, Truncate est DDL


Commit et Rollback

Variable par fournisseur

Serveur SQL

Truncate peut être annulé.

PostgreSQL

Truncate peut être annulé.

Oracle

Un TRUNCATE étant DDL, il implique deux commits, un avant et un après l’exécution de l’instruction. Truncate ne peut donc pas être annulé et un échec dans le processus tronqué aura quand même généré un commit.

Toutefois, voir Flashback ci-dessous.


Récupération de l’espace

Supprimer ne récupère pas d’espace, Truncate récupère l’espace

Oracle

Si vous utilisez la clause REUSE STORAGE, les segments de données ne sont pas désalloués, ce qui peut être légèrement plus efficace si la table doit être rechargée avec des données. La cote haute est réinitialisée.


Portée de ligne

La suppression peut être utilisée pour supprimer toutes les lignes ou seulement un sous-ensemble de lignes. Truncate supprime toutes les lignes.

Oracle

Lorsqu’une table est partitionnée, les partitions individuelles peuvent être tronquées isolément, ce qui permet de supprimer partiellement toutes les données de la table.


Types d’object

La suppression peut être appliquée aux tables et aux tables d’un cluster. Truncate s’applique uniquement aux tables ou au cluster entier. (Peut être spécifique à Oracle)


Identité de l’object de données

Oracle

Delete n’affecte pas l’ID de l’object de données, mais truncate assigne un nouvel identifiant d’object de données sauf s’il n’y a jamais eu d’insertion sur la table depuis sa création Même un seul insert annulé entraîne l’atsortingbution d’un nouvel ID d’object lors de la troncature .


Flashback (Oracle)

Flashback fonctionne sur les suppressions, mais une troncature empêche le retour aux états avant l’opération.

Cependant, à partir de 11gR2, la fonctionnalité FLASHBACK ARCHIVE le permet, sauf dans Express Edition

Utilisation de FLASHBACK dans Oracle http://docs.oracle.com/cd/E11882_01/appdev.112/e41502/adfns_flashback.htm#ADFNS638


Les privilèges

Variable

Oracle

La suppression peut être accordée sur une table à un autre utilisateur ou à un autre rôle, mais tronquer ne peut pas être sans utiliser une subvention DROP ANY TABLE.


Refaire / Annuler

Delete génère une petite quantité de refaire et une grande quantité d’annulation. Truncate génère une quantité négligeable de chacun.


Index

Oracle

Une opération tronquée rend les index inutilisables utilisables à nouveau. Supprimer ne le fait pas.


Clés étrangères

Un tronçon ne peut pas être appliqué lorsqu’une clé étrangère activée fait référence à la table. Le traitement avec suppression dépend de la configuration des clés étrangères.


Verrouillage de la table

Oracle

Truncate requirejs un verrou de table exclusif, delete nécessite un verrou de table partagé. Ainsi, la désactivation des verrous de table est un moyen d’empêcher les opérations de troncature sur une table.


Déclencheurs

Les déclencheurs DML ne se déclenchent pas sur un tronc.

Oracle

Les déclencheurs DDL sont disponibles.


Exécution à distance

Oracle

Truncate ne peut pas être émis sur un lien de firebase database.


Colonnes d’identité

Serveur SQL

Truncate réinitialise la séquence pour les types de colonne IDENTITY, mais pas la suppression.


Jeu de résultats

Dans la plupart des implémentations, une instruction DELETE peut renvoyer au client les lignes supprimées.

Par exemple, dans un sous-programme Oracle PL / SQL, vous pouvez:

 DELETE FROM employees_temp WHERE employee_id = 299 RETURNING first_name, last_name INTO emp_first_name, emp_last_name; 

La différence entre tronquer et supprimer est répertoriée ci-dessous:

 +----------------------------------------+----------------------------------------------+ | 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. | Delete does not 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) | +----------------------------------------+----------------------------------------------+ 

LAISSEZ TOMBER

La commande DROP supprime une table de la firebase database. Toutes les lignes, index et privilèges des tables seront également supprimés. Aucun déclencheur DML ne sera déclenché. L’opération ne peut pas être annulée.

TRONQUER

TRUNCATE supprime toutes les lignes d’une table. L’opération ne peut pas être annulée et aucun déclencheur ne sera déclenché. En tant que tel, TRUCATE est plus rapide et n’utilise pas autant d’espace d’annulation qu’un DELETE.

EFFACER

La commande DELETE permet de supprimer des lignes d’une table. Une clause WHERE peut être utilisée pour supprimer uniquement certaines lignes. Si aucune condition WHERE n’est spécifiée, toutes les lignes seront supprimées. Après avoir effectué une opération DELETE, vous devez COMMIT ou ROLLBACK la transaction pour rendre la modification permanente ou pour l’annuler. Notez que cette opération provoquera le déclenchement de tous les déclencheurs DELETE sur la table.

De: http://www.orafaq.com/faq/difference_between_truncate_delete_and_drop_commands

Toutes les bonnes réponses auxquelles je dois append:

Étant donné que TRUNCATE TABLE est une commande DDL ( Data Definition Language ) et non DML ( Data Manipulation Langauge ), les Delete Triggers ne s’exécutent pas.

Avec SQL Server ou MySQL, s’il existe un PK avec incrémentation automatique, tronquer réinitialisera le compteur.

“Truncate ne connecte rien” est correct. J’irais plus loin:

Truncate n’est pas exécuté dans le contexte d’une transaction.

L’avantage de la vitesse de tronquer sur la suppression devrait être évident. Cet avantage va de sortingvial à énorme, selon votre situation.

Cependant, j’ai vu tronquer involontairement l’intégrité référentielle et violer d’autres contraintes. Le pouvoir que vous gagnez en modifiant les données en dehors d’une transaction doit être mis en balance avec la responsabilité que vous héritez lorsque vous marchez sur la corde raide sans filet.

Résumé de Delete Vs Truncate dans le serveur SQL
Pour l’article complet, suivez ce lien: http://codaffection.com/sql-server-article/delete-vs-truncate-in-sql-server/

entrer la description de l'image ici

Extrait de l’article de dotnet mob: Delete Vs Truncate dans SQL Server

Oui, DELETE est plus lent, TRUNCATE est plus rapide. Pourquoi?

DELETE doit lire les enregistrements, vérifier les contraintes, mettre à jour le bloc, mettre à jour les index et générer des redo / undo. Tout cela prend du temps.

TRUNCATE ajuste simplement un pointeur dans la firebase database pour la table (High Water Mark) et poof! les données ont disparu.

Ceci est spécifique à Oracle, AFAIK.

Si accidentellement, vous supprimez toutes les données du tableau en utilisant Supprimer / Tronquer. Vous pouvez annuler les transactions validées. Restaurez la dernière sauvegarde et exécutez le journal des transactions jusqu’au moment où Delete / Truncate est sur le sharepoint se produire.

Les informations connexes ci-dessous proviennent d’ un article de blog :

Lorsque vous travaillez sur une firebase database, nous utilisons Delete et Truncate sans connaître les différences entre eux. Dans cet article, nous allons discuter de la différence entre Delete et Truncate dans Sql.

Effacer:

  • Delete est une commande DML.
  • L’instruction de suppression est exécutée à l’aide d’un verrou de ligne, chaque ligne de la table étant verrouillée pour être supprimée.
  • Nous pouvons spécifier des filtres dans la clause where.
  • Il supprime les données spécifiées si la condition existe.
  • Supprimer des activités un déclencheur car l’opération est consignée individuellement.
  • Plus lent que tronqué car il conserve les journaux

Tronquer

  • Truncate est une commande DDL.
  • Truncate table verrouille toujours la table et la page mais pas chaque ligne. Comme cela supprime toutes les données.
  • Ne peut pas utiliser Où condition.
  • Il supprime toutes les données.
  • La table tronquée ne peut pas activer un déclencheur car l’opération ne consigne pas les suppressions de lignes individuelles.
  • Plus rapide en termes de performances, car il ne conserve aucun journal.

Remarque: les options Delete et Truncate peuvent être annulées lorsqu’elles sont utilisées avec Transaction. Si Transaction est effectuée, cela signifie que nous ne pouvons pas annuler la commande Truncate, mais nous pouvons toujours annuler la commande Delete à partir des fichiers journaux, car delete write les enregistre dans le fichier journal au cas où cela serait nécessaire à partir des fichiers journaux.

Si une contrainte de clé étrangère se réfère à la table que vous essayez de tronquer, cela ne fonctionnera pas même si la table de référence ne contient aucune donnée. Cela est dû au fait que la vérification de la clé étrangère est effectuée avec DDL plutôt qu’avec DML. Cela peut être obtenu en désactivant temporairement la ou les contraintes de la clé étrangère sur la table.

La table de suppression est une opération consignée. Ainsi, la suppression de chaque ligne est consignée dans le journal des transactions, ce qui la ralentit. Truncate table supprime également toutes les lignes d’une table, mais n’enregistre pas la suppression de chaque ligne, mais enregistre la désallocation des pages de données de la table, ce qui la rend plus rapide.

~ Si accidentellement, vous supprimez toutes les données du tableau en utilisant Supprimer / Tronquer. Vous pouvez annuler les transactions validées. Restaurez la dernière sauvegarde et exécutez le journal des transactions jusqu’au moment où Delete / Truncate est sur le sharepoint se produire.

TRUNCATE est l’instruction DDL, alors que DELETE est une instruction DML. Voici les différences entre les deux:

  1. Comme TRUNCATE est une TRUNCATE DDL ( Data definition language ), il ne nécessite aucun engagement pour rendre les modifications permanentes. Et c’est la raison pour laquelle les lignes supprimées par tronquer n’ont pas pu être restaurées. D’un autre côté, DELETE est une instruction DML ( langage de manipulation de données ) qui nécessite donc un engagement explicite pour rendre son effet permanent.

  2. TRUNCATE supprime toujours toutes les lignes d’une table, laissant la table vide et la structure de la table intacte, alors que DELETE peut être supprimé si la clause where est utilisée.

  3. Les lignes supprimées par l’ TRUNCATE TABLE ne peuvent pas être restaurées et vous ne pouvez pas spécifier la clause where dans l’ TRUNCATE .

  4. TRUNCATE ne déclenchent pas les déclencheurs par opposition aux déclencheurs on delete sur l’instruction DELETE

Voici le très bon lien concernant le sujet.

TRONQUER

  • Il est plus rapide et utilise moins de ressources de journal système et de transaction que DELETE .
  • supprime les données en libérant les pages de données utilisées pour stocker les données de la table, et seules les désallocations de page sont enregistrées dans le journal des transactions.
  • supprime toutes les lignes d’une table, mais la structure de la table, ses colonnes, ses contraintes, ses index, etc. restnt. Le compteur utilisé par une identité pour les nouvelles lignes est réinitialisé à la graine de la colonne.
  • vous ne pouvez pas utiliser TRUNCATE TABLE sur une table référencée par une contrainte FOREIGN KEY . Étant donné que TRUNCATE TABLE n’est pas connecté, il ne peut pas activer un déclencheur.
  • ne peut pas être annulé
  • c’est la commande DDL.
  • réinitialise l’identité de la table

EFFACER

  • supprime les lignes une par une et enregistre une entrée dans le journal des transactions pour chaque ligne supprimée.
  • Si vous souhaitez conserver le compteur d’identité, utilisez plutôt DELETE . Si vous souhaitez supprimer la définition de la table et ses données, utilisez l’instruction DROP TABLE .
  • peut être utilisé avec ou sans la clause WHERE
  • active les déclencheurs.
  • peut être roulé en arrière
  • c’est la commande DML.
  • Ne réinitialise pas l’identité de la table.

Remarque: DELETE et TRUNCATE peuvent tous deux être annulés lorsqu’ils sont entourés par TRANSACTION si la session en cours n’est pas fermée. Si TRUNCATE est écrit dans l’éditeur de requête entouré de TRANSACTION et si la session est fermée, il ne peut pas être annulé mais DELETE peut être annulé.

Dans SQL Server 2005, je pense que vous pouvez annuler un tronçon

EFFACER

La commande DELETE permet de supprimer des lignes d’une table. Une clause WHERE peut être utilisée pour supprimer uniquement certaines lignes. Si aucune condition WHERE n’est spécifiée, toutes les lignes seront supprimées. Après avoir effectué une opération DELETE, vous devez COMMIT ou ROLLBACK la transaction pour rendre la modification permanente ou pour l’annuler. Notez que cette opération provoquera le déclenchement de tous les déclencheurs DELETE sur la table.

TRONQUER

TRUNCATE supprime toutes les lignes d’une table. L’opération ne peut pas être annulée et aucun déclencheur ne sera déclenché. En tant que tel, TRUCATE est plus rapide et n’utilise pas autant d’espace d’annulation qu’un DELETE.

LAISSEZ TOMBER

La commande DROP supprime une table de la firebase database. Toutes les lignes, index et privilèges des tables seront également supprimés. Aucun déclencheur DML ne sera déclenché. L’opération ne peut pas être annulée.


DROP et TRUNCATE sont des commandes DDL, alors que DELETE est une commande DML. Par conséquent, les opérations DELETE peuvent être annulées (annulées), tandis que les opérations DROP et TRUNCATE ne peuvent pas être annulées.

De: http://www.orafaq.com/faq/difference_between_truncate_delete_and_drop_commands

Une petite correction à la réponse d’origine – supprimer génère également des quantités significatives de refaire (comme annuler est lui-même protégé par refaire). Cela peut être vu à partir de la sortie autotrace:

 SQL> delete from t1; 10918 rows deleted. Elapsed: 00:00:00.58 Execution Plan ---------------------------------------------------------- 0 DELETE STATEMENT Optimizer=FIRST_ROWS (Cost=43 Card=1) 1 0 DELETE OF 'T1' 2 1 TABLE ACCESS (FULL) OF 'T1' (TABLE) (Cost=43 Card=1) Statistics ---------------------------------------------------------- 30 recursive calls 12118 db block gets 213 consistent gets 142 physical reads 3975328 redo size 441 bytes sent via SQL*Net to client 537 bytes received via SQL*Net from client 4 SQL*Net roundsortingps to/from client 2 sorts (memory) 0 sorts (disk) 10918 rows processed 

TRUNCATE peut être annulé s’il est inclus dans une transaction.

S’il vous plaît voir les deux références ci-dessous et testez-vous: –

http://blog.sqlauthority.com/2007/12/26/sql-server-truncate-cant-be-rolled-back-using-log-files-after-transaction-session-is-closed/

http://sqlblog.com/blogs/kalen_delaney/archive/2010/10/12/tsql-tuesday-11-rolling-back-truncate-table.aspx

Le TRUNCATE vs. DELETE est l’une des questions sortingstement célèbres lors des entretiens SQL. Assurez-vous simplement de l’expliquer correctement à l’intervieweur ou cela pourrait vous coûter le travail. Le problème est que peu de gens sont conscients de la probabilité que la réponse soit erronée si vous leur dites que OUI Tronquer peut être annulé.

La plus grande différence est que truncate est une opération non journalisée pendant que delete est.

Simplement, cela signifie qu’en cas de panne de la firebase database, vous ne pouvez pas récupérer les données utilisées par tronqué, mais avec la suppression, vous pouvez.

Plus de détails ici

Instruction DELETE: cette commande supprime uniquement les lignes de la table en fonction de la condition indiquée dans la clause where ou supprime toutes les lignes de la table si aucune condition n’est spécifiée. Mais cela ne libère pas l’espace contenant la table.

La syntaxe d’une instruction SQL DELETE est la suivante:

DELETE FROM nom_table [condition WHERE];

Instruction TRUNCATE: Cette commande est utilisée pour supprimer toutes les lignes de la table et libérer l’espace contenant la table.

EFFACER

 DELETE is a DML command DELETE you can rollback Delete = Only Delete- so it can be rolled back In DELETE you can write conditions using WHERE clause Syntax – Delete from [Table] where [Condition] 

TRONQUER

 TRUNCATE is a DDL command You can't rollback in TRUNCATE, TRUNCATE removes the record permanently Truncate = Delete+Commit -so we can't roll back You can't use conditions(WHERE clause) in TRUNCATE Syntax – Truncate table [Table] 

Pour plus de détails visitez

http://www.zilckh.com/what-is-the-difference-between-truncate-and-delete/

Une autre différence entre les deux opérations est que si la table contient une colonne d’identité, le compteur de cette colonne est réinitialisé 1 (ou la valeur initiale définie pour la colonne) sous TRUNCATE. DELETE n’a pas cet effet.

Voici ma réponse détaillée sur la différence entre DELETE et TRUNCATE dans SQL Server

Supprimer les données : Tout d’abord, les deux peuvent être utilisées pour supprimer les lignes de la table.
Mais un DELETE peut être utilisé pour supprimer les lignes non seulement d’une table mais également d’une vue ou du résultat d’un OPENROWSET ou d’un OPENQUERY soumis aux capacités du fournisseur.

Clause FROM : avec DELETE, vous pouvez également supprimer des lignes d’une table / view / rowset_function_limited en fonction des lignes d’une autre table en utilisant une autre clause FROM. Dans cette clause FROM, vous pouvez également écrire des conditions JOIN normales. En fait, vous pouvez créer une instruction DELETE à partir d’une instruction SELECT qui ne contient aucune fonction d’agrégation en remplaçant SELECT par DELETE et en supprimant les noms de colonne.
Avec TRUNCATE, vous ne pouvez pas faire ça.

WHERE : un TRUNCATE ne peut pas avoir des conditions WHERE, mais un DELETE peut. Cela signifie qu’avec TRUNCATE, vous ne pouvez pas supprimer une ligne spécifique ou un groupe spécifique de lignes. TRUNCATE TABLE est similaire à l’instruction DELETE sans clause WHERE.

Performance : TRUNCATE TABLE est plus rapide et utilise moins de ressources de journal système et de transaction. Et l’une des raisons est le locking utilisé par les deux déclarations. L’instruction DELETE est exécutée à l’aide d’un verrou de ligne, chaque ligne de la table étant verrouillée pour être supprimée. TRUNCATE TABLE verrouille toujours la table et la page mais pas chaque ligne.

Journal des transactions : l’instruction DELETE supprime les lignes une par une et crée des entrées individuelles dans le journal des transactions pour chaque ligne.
TRUNCATE TABLE supprime les données en libérant les pages de données utilisées pour stocker les données de la table et enregistre uniquement les désallocations de la page dans le journal des transactions.

Pages : après l’exécution d’une instruction DELETE, la table peut toujours contenir des pages vides. TRUNCATE supprime les données en libérant les pages de données utilisées pour stocker les données de la table.

Trigger : TRUNCATE n’active pas les déclencheurs de suppression sur la table. Donc, vous devez être très prudent lorsque vous utilisez TRUNCATE. Il ne faut jamais utiliser un TRUNCATE si delete Trigger est défini sur la table pour effectuer des opérations de nettoyage ou de journalisation automatiques lorsque des lignes sont supprimées.

Colonne d’identité : avec TRUNCATE si la table contient une colonne d’identité, le compteur de cette colonne est réinitialisé à la valeur de départ définie pour la colonne. Si aucune graine n’a été définie, la valeur par défaut 1 est utilisée. DELETE ne réinitialise pas le compteur d’identité. Donc, si vous souhaitez conserver le compteur d’identité, utilisez plutôt DELETE.

Réplication : DELETE peut être utilisé avec la table utilisée dans la réplication transactionnelle ou la réplication de fusion.
Bien que TRUNCATE ne puisse pas être utilisé contre les tables impliquées dans la réplication transactionnelle ou la réplication de fusion.

Rollback : l’instruction DELETE peut être annulée.
TRUNCATE peut également être annulé à condition qu’il soit inclus dans un bloc TRANSACTION et que la session ne soit pas fermée. Une fois la session fermée, vous ne pourrez plus restaurer TRUNCATE.

Ressortingctions : l’instruction DELETE peut échouer si elle viole un déclencheur ou si elle tente de supprimer une ligne référencée par des données dans une autre table avec une contrainte FOREIGN KEY. Si DELETE supprime plusieurs lignes et que l’une des lignes supprimées viole un déclencheur ou une contrainte, l’instruction est annulée, une erreur est renvoyée et aucune ligne n’est supprimée.
Et si DELETE est utilisé pour View, cette vue doit être une vue pouvant être mise à jour. TRUNCATE ne peut pas être utilisé avec la table utilisée dans la vue indexée.
TRUNCATE ne peut pas être utilisé contre la table référencée par une contrainte FOREIGN KEY, sauf si une table possède une clé étrangère qui fait référence à elle-même.

En bref, truncate ne consigne rien (donc il est beaucoup plus rapide mais ne peut pas être annulé) alors que delete est enregistré (et peut faire partie d’une transaction plus importante, sera annulé, etc.). Si vous avez des données que vous ne voulez pas dans une table en dev, il est normalement préférable de les tronquer car vous ne risquez pas de remplir le journal des transactions

Une bonne raison pour cela est que vous devez actualiser les données dans une table de plusieurs millions de lignes, mais que vous ne voulez pas la reconstruire. “Delete *” prendrait une éternité, alors que l’impact de Truncate sur la performance serait négligeable.

Ne peut pas faire de DDL sur un dblink.

Je commenterais le post de matthieu, mais je n’ai pas encore de rep …

Dans MySQL, le compteur d’incrémentation automatique est réinitialisé avec truncate, mais pas avec delete.

Ce n’est pas que truncate n’enregistre rien dans SQL Server. truncate ne consigne aucune information mais enregistre la page de désallocation des données pour la table sur laquelle vous avez renvoyé TRUNCATE.

et l’enregistrement tronqué peut être annulé si nous définissons une transaction au début et que nous pouvons récupérer l’enregistrement tronqué après son annulation. Mais vous ne pouvez pas récupérer les enregistrements tronqués à partir de la sauvegarde du journal des transactions après une transaction tronquée validée.

Truncate peut aussi être Rollbacked ici l’exapmle

 begin Tran delete from Employee select * from Employee Rollback select * from Employee 

Truncate and Delete in SQL sont deux commandes permettant de supprimer ou de supprimer des données d’une table. Bien que basiques les deux commandes Sql peuvent créer beaucoup de problèmes jusqu’à ce que vous soyez familiarisé avec les détails avant de l’utiliser. Un choix incorrect de commande peut entraîner un processus très lent ou peut même faire sauter le segment de journal, si trop de données doivent être supprimées et que le segment de journal ne suffit pas. C’est pourquoi il est essentiel de savoir quand utiliser la commande truncate and delete en SQL, mais avant de les utiliser, vous devez connaître les différences entre Truncate et Delete. data ou TRUNCATE doivent être utilisés pour purger les tables.

Référez le chèque cliquez ici

En émettant une instruction TRUNCATE TABLE, vous indiquez à SQL Server de supprimer tous les enregistrements d’une table, sans qu’aucun processus de journalisation ou de transaction ne soit effectué.

EFFACER

Lorsque l’instruction DELETE est exécutée sans clause WHERE, elle supprime toutes les lignes. Cependant, lorsqu’un nouvel enregistrement est inséré, la valeur d’identité passe de 11 (identité maximale) à 12. Il ne se réinitialise pas mais continue d’augmenter. TRONQUER

Lorsque l’instruction TRUNCATE est exécutée, toutes les lignes seront supprimées. Cependant, lorsqu’un nouvel enregistrement est inséré, la valeur d’identité passe de 11 (valeur d’origine). TRUNCATE réinitialise la valeur d’identité à la valeur d’origine de la table.

LAISSEZ TOMBER

DELETE et TRUNCATE peuvent tous deux être annulés lorsqu’ils sont utilisés avec TRANSACTION.

Si Transaction est faite, cela signifie COMMITÉ, alors nous ne pouvons pas annuler la commande TRUNCATE, mais nous pouvons toujours annuler la commande DELETE à partir des fichiers LOG, puisque DELETE write les enregistre dans le fichier journal au cas où cela serait nécessaire à