Tous les produits
Search
Centre de documentation

Hologres:TRUNCATE

Dernière mise à jour :Aug 11, 2026

TRUNCATE supprime instantanément toutes les lignes d'une table.

Limites

  • Hologres prend en charge les séquences, mais uniquement avec l'option CONTINUE IDENTITY, et non RESTART IDENTITY.

  • La commande TRUNCATE s'applique aux tables standard, aux tables de partition parentes et aux tables de partition enfants.

  • La commande TRUNCATE ne fonctionne pas sur les tables externes.

Syntaxe

TRUNCATE [ TABLE ] name [, ... ]
    [ CONTINUE IDENTITY ]

L'option CONTINUE IDENTITY conserve la valeur actuelle de toute séquence associée. Il s'agit du comportement par défaut.

Remarque
  • La commande TRUNCATE ne génère pas de journaux binaires.

    Comportement selon la version :

  • Avant la version V3.1 : La commande TRUNCATE est une instruction de définition de données (DDL). Son exécution sur une table avec la journalisation binaire activée ne produit ni erreur ni journal binaire.

  • Version V3.1 et ultérieures : La commande TRUNCATE est une instruction de manipulation de données (DML). Cela réduit la pression sur le frontal (FE) lors des appels fréquents à TRUNCATE. Son exécution sur une table avec la journalisation binaire activée renvoie une erreur. Pour résoudre ce problème, utilisez l'une des approches suivantes au niveau de la session :

    • Option 1 (recommandée) : Exécutez la commande sur la table en tant que DDL en définissant SET hg_enable_truncate_as_dml = off.

    • Option 2 : Désactivez la journalisation binaire en définissant SET hg_experimental_generate_binlog = off. Ce paramètre affecte toutes les tables et les opérations DML. Pour plus de détails, consultez la section Désactiver la journalisation binaire pour les opérations DML sur une table.

Exemples

Vider une table standard

CREATE TABLE event (
    id INT,
    name text,
    tag text
);
INSERT INTO event (id, name, tag) VALUES (23, 'buy', 'num');

-- Verify rows exist before truncation
SELECT * FROM event;

TRUNCATE TABLE event;

Vider une table contenant une colonne de type séquence

L'option CONTINUE IDENTITY est appliquée par défaut. Le compteur de séquence n'est pas réinitialisé après le vidage.

CREATE TABLE event_1 (
    id serial,
    name text,
    tag text
);
INSERT INTO event_1 (name, tag) VALUES ('buy', 'num');

-- Verify rows exist before truncation
SELECT * FROM event_1;

# CONTINUE IDENTITY is the default.
TRUNCATE TABLE event_1 CONTINUE IDENTITY;