TRUNCATE [ TABLE ] nom [, ...] [ CASCADE | RESTRICT ]
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.
Le nom d'une table à vider (peut être qualifié par le schéma).
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.
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.
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.