quelle est la différence entre TRUNCATE et DELETE sans WHERE
lequel doit-on privilégier pour seulement enlever toutes les lignes d'une table
afin de pouvoir par sql*loader la recharger intégralement
quelle est la différence entre TRUNCATE et DELETE sans WHERE
lequel doit-on privilégier pour seulement enlever toutes les lignes d'une table
afin de pouvoir par sql*loader la recharger intégralement
Un truncate est plus rapide.
Il y a un commit implicite.
Il ne faut pas que la table soit référencée par une FK
Attention, Le fait que le commit soit implicite fait qu'un truncate est irrémédiable !
Vincent Rogier.
Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog
Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !
OCILIB (C Driver for Oracle)
Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle
Delete, c'est du DML, cela efface les lignes.
Truncate, c'est du DDL, cela inscrit dans le dictionnaire du sgbd que la table est vide.
Le temps de traitement d'un delete dépend du volume dans la table (nombre de lignes, volume disque à scanner, index à réaménager etc...).
Truncate n'accede qu'au dictionnaire pour simplement dire que le table (et les index !) sont vides.
Delete et truncate ne demandent pas les même privileges.
Comme tout DDL, en effet, il y a un commit implicite.
et DELETE ne touche pas à la HWM. Donc un DELETE de toutes les tables d'un tablespace ne suffit pas à réduire la taille des datafiles![]()
Je peux en rajouter une ?
TRUNCATE ne déclenche pas les triggers !
(ouais, je suis content de moi, et alors ?)
Partager