DELETE OR TRUNCATE

9 mar

Chèr(è)s Ami(e) en OracleJ’ai eu cette question de nos ami(e)s développeur.

Dois je utiliser le Truncate ou le Delete pour vider ma table avec des missions de lignes ?

TRUNCATE est généralement plus efficace mais a des effets
 secondaires dont 
vous devez être conscient.
Par exemple, TRUNCATE est une instruction 
DDL(data definition language).
Ça signifie Oracle valide automatiquement 
l'instruction (et la transaction en cours)
 après 
son exécution. Il est donc impossible de revenir en arrière.
Ainsi, pour les grandes tables, une instruction TRUNCATE est généralement 
le moyen
 le plus efficace de supprimer des données.

Un autre effet secondaire de l'instruction TRUNCATE est 
que vous ne pouvez pas tronquer
 une table parent qui a une clé primaire défini qui
 est référencé par une 
contrainte de clé étrangère activée dans une table enfant,
 même si la table enfant contient
 zéro ligne
Si vous avez besoin de choisir de revenir en arrière 
(au lieu de valider) lorsque
 vous supprimez des données, vous devez utiliser
DELETE
Comparez le comportement TRUNCATE à celui de l'instruction DELETE. 
Oracle vous permet
 d'utiliser le DELETE
instruction pour supprimer des lignes d'une table parent alors 
que les contraintes sont
 activées qui référencent une table enfant
(en supposant qu'il n'y a pas de lignes dans la table enfant). 
C'est parce que DELETE 
génère undo, est cohérent en lecture et peut être annulé
Si vous devez utiliser une instruction DELETE, vous devez émettre 
un COMMIT ou
 un ROLLBACK pour terminer la transaction.
La validation d'une instruction DELETE rend les modifications 
de données permanente

Comparaison TRUNCATE et DELETE
TRUNCATE DELETE
Commit or rollback NO YES
Reset HWM YES NO
Active et déactive la contrainte YES NO
Pour la grosse volumétrie YES NO


OraclementVotre

Pas encore de commentaire

Laisser une réponse

Unblog.fr | Créer un blog | Annuaire | Signaler un abus