TRUNCATE elimina todas las filas de una tabla de forma instantánea.
Limitaciones
Hologres admite secuencias, pero solo
CONTINUE IDENTITY, noRESTART IDENTITY.TRUNCATEfunciona en tablas estándar, tablas de partición principales y tablas de partición secundarias.TRUNCATEno funciona en tablas externas.
Sintaxis
TRUNCATE [ TABLE ] name [, ... ]
[ CONTINUE IDENTITY ]
CONTINUE IDENTITY conserva el valor actual de cualquier secuencia asociada. Este es el comportamiento predeterminado.
-
TRUNCATEno genera registros binarios.Comportamiento por versión:
Antes de V3.1:
TRUNCATEes una instrucción de lenguaje de definición de datos (DDL). Ejecutarla en una tabla con registro binario habilitado no produce errores ni genera registros binarios.-
V3.1 y posteriores:
TRUNCATEes una instrucción de lenguaje de manipulación de datos (DML). Esto reduce la carga en el frontend (FE) cuandoTRUNCATEse invoca con frecuencia. Ejecutarla en una tabla con registro binario habilitado devuelve un error. Para resolverlo, utilice uno de los siguientes métodos en la sesión:Opción 1 (recomendada): Ejecute la operación como DDL mediante
SET hg_enable_truncate_as_dml = off.Opción 2: Deshabilite el registro binario mediante
SET hg_experimental_generate_binlog = off. Esta configuración afecta a todas las tablas y operaciones DML. Para más detalles, consulte Disable binary logging for DML operations on a table.
Ejemplos
Vaciar una tabla regular
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;
Vaciar una tabla con una columna de secuencia
CONTINUE IDENTITY es el valor predeterminado. El contador de la secuencia no se restablece después de vaciar la tabla.
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;