Deux méthodes existent dans SQL aux tables de base de données vide . La première est la fonction «Supprimer» et l'autre est " TRUNCATE ". Fois de préserver l'intégrité de la table, il se jette , mais chacun diffère dans les mécanismes utilisés pour supprimer des enregistrements , en particulier en ce qui concerne les modes de fonctionnement , récupération de données , la vitesse et l'utilisation des ressources . La fonction "DELETE" est classé en fonction du langage de manipulation de données ( DML ), tandis que " TRUNCATE " appartient à la famille des fonctions qui traitent de Data Definition Language (DDL) . Modes de fonctionnement
L'opération " TRUNCATE " est une approche tout-ou- rien qui libère de l'espace disque réservé aux données de la table . L'opération supprime aussi des pointeurs vers des index. Les données continuent d'exister dans la table jusqu'à ce qu'il soit remplacé par de nouvelles données . En revanche , l'opération "DELETE" supprime un enregistrement à la fois , enregistrer les détails de chaque enregistrement dans un journal des transactions avant son retrait . L'opération "DELETE" exige que l'opération soit commis , alors qu'un " TRUNCATE " s'engage implicitement la transaction. Une déclaration "DELETE" permet également à l' utilisateur de supprimer conditionnellement enregistrements qui répondent à certains critères .
Data Recovery
Une opération " TRUNCATE " supprime les données d'une tableau sans enregistrer les informations de restauration. Une fois que la commande est exécutée , la récupération n'est pas possible si l'espace précédemment alloué pour les données ont été écrasées par les nouvelles données. En revanche , la restauration à un état antérieur dans une opération "DELETE" peut se produire parce que chaque enregistrement est engagée dans le tablespace d'annulation avant son retrait . Les données manquantes peuvent ensuite être récupérées à partir des journaux d'annulation , à condition que les billes existent toujours.
Vitesse et une utilisation des ressources
L' opération " TRUNCATE " est un opération de suppression à grande vitesse qui nécessite peu de ressources de base de données en raison de la manière dont il remplit les fonctions de supprimer tous ou rien . opérations "Delete" sur de grands volumes de données , d'autre part, peut prendre un temps considérable en raison de la question de l' enregistrement d' une ligne à la fois dans l' espace de table de restauration. En conséquence, la taille physique des tables impliquées pourrait connaître une explosion avant le retrait des dossiers rétrécir le tableau arrière à une taille acceptable.
Exceptions concernant les contraintes référentielles
" , "opérations TRUNCATE ne peut se produire si toutes les contraintes de clé étrangère sont supprimés ou désactivés avant son exécution . La même règle s'applique à " supprimer" des opérations . Cela est dû à la règle imposée sur les bases de données pour définir les relations de clé primaire et étrangère et qui précise qu '"aucune clé étrangère doit balancer . " Par conséquent, " TRUNCATE " et "Supprimer" opérations échoueront si il ya une clé primaire /contrainte de clé étrangère en place.