Recherche…


Introduction

L'instruction TRUNCATE supprime toutes les données d'une table. Ceci est similaire à DELETE sans filtre, mais, en fonction du logiciel de base de données, présente certaines restrictions et optimisations.

Syntaxe

  • TRUNCATE TABLE nom_table;

Remarques

TRUNCATE est une commande DDL (Data Definition Language), et il existe donc des différences significatives entre cette commande et DELETE (un langage de manipulation de données, DML, commande). Bien que TRUNCATE puisse être un moyen de supprimer rapidement de gros volumes d'enregistrements d'une base de données, ces différences doivent être comprises afin de décider si l'utilisation d'une commande TRUNCATE convient à votre situation particulière.

  • TRUNCATE est une opération de page de données. Par conséquent, les déclencheurs DML (ON DELETE) associés à la table ne se déclenchent pas lorsque vous effectuez une opération TRUNCATE. Bien que cela économise beaucoup de temps pour des opérations de suppression massives, vous devrez peut-être alors supprimer manuellement les données associées.
  • TRUNCATE libère l'espace disque utilisé par les lignes supprimées, DELETE libère de l'espace
  • Si la table à tronquer utilise des colonnes d'identité (MS SQL Server), la graine est réinitialisée par la commande TRUNCATE. Cela peut entraîner des problèmes d’intégrité référentielle
  • Selon les rôles de sécurité en place et la variante de SQL utilisée, il se peut que vous ne disposiez pas des autorisations nécessaires pour exécuter une commande TRUNCATE.

Supprimer toutes les lignes de la table Employee

TRUNCATE TABLE Employee;

L'utilisation de la table tronquée est souvent préférable à l'utilisation de DELETE TABLE car elle ignore tous les index et tous les déclencheurs et supprime tout.

Supprimer la table est une opération basée sur des lignes, cela signifie que chaque ligne est supprimée. Truncate table est une opération de page de données sur laquelle toute la page de données est réallouée. Si vous avez une table avec un million de lignes, il sera beaucoup plus rapide de tronquer la table que d'utiliser une instruction delete table.

Bien que nous puissions supprimer des lignes spécifiques avec DELETE, nous ne pouvons pas TRUNCATE de lignes spécifiques, nous ne pouvons que TRUNCATE tous les enregistrements à la fois. La suppression de toutes les lignes et l’insertion d’un nouvel enregistrement continueront d’ajouter la valeur de la clé primaire incrémentée automatiquement à partir de la valeur précédemment insérée.

Notez que lorsque vous tronquez une table, aucune clé étrangère ne doit être présente , sinon vous obtiendrez une erreur.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow