PostgreSQLLa base de données la plus sophistiquée au monde.

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.