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 nonRESTART IDENTITY.La commande
TRUNCATEs'applique aux tables standard, aux tables de partition parentes et aux tables de partition enfants.La commande
TRUNCATEne 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.
-
La commande
TRUNCATEne génère pas de journaux binaires.Comportement selon la version :
Avant la version V3.1 : La commande
TRUNCATEest 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
TRUNCATEest 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;