TRUNCATE
TRUNCATE — vide une table ou un ensemble de tables
Synopsis
TRUNCATE [ TABLE ] nom [, ...] [ CASCADE | RESTRICT ]
Description
La commande
TRUNCATE
supprime rapidement toutes les lignes d'un ensemble de tables. Elle
a le même effet qu'un
DELETE
non qualifié sur chaque
table, mais comme elle ne parcourt par la table, elle est plus
rapide. De plus, elle récupère immédiatement l'espace disque,
évitant ainsi une opération
VACUUM
. Cette commande est
particulièrement utile pour les tables volumineuses.
Paramètres
-
name
-
Le nom d'une table à vider (peut être qualifié par le
schéma).
-
CASCADE
-
Vide toutes les tables qui ont des références de clés
étrangères sur une des tables nommées et sur toute table
ajoutée au groupe à cause du CASCADE.
-
RESTRICT
-
Refuse le vidage si une des tables a des références de clés
étrangères sur une table qui ne doit pas être vidée. Cette
option est active par défaut.
Notes
Seul le propriétaire d'une table peut la vider (
TRUNCATE
).
TRUNCATE
ne peut pas
être utilisé sur une table référencée par d'autres tables au
travers de clés étrangères, sauf si ces tables sont aussi comprises
dans la commande. Dans le cas contraire, la vérification
nécessiterait des parcours complets de tables, ce qui n'est pas le
but de la commande
TRUNCATE
. L'option CASCADE est utilisable pour inclure automatiquement
toutes les tables dépendantes -- faites attention lorsque vous
utilisez cette option parce que vous pourriez perdre des données
que vous auriez souhaitez conserver !
TRUNCATE
n'actionne
pas les triggers ON DELETE éventuellement
définis sur les tables concernées.
Exemples
Vider les tables grossetable et grandetable :
TRUNCATE TABLE grossetable, grandetable;
Vide la table uneautretable, et cascade
cela à toutes les tables qui référencent uneautretable via des contraintes de clés étrangères
:
TRUNCATE uneautretable CASCADE;
Compatibilité
Il n'existe pas de commande
TRUNCATE
dans le standard SQL.