Todos os produtos
Search
Central de documentação

Hologres:ALTER PARTITION TABLE

Última atualização: Jun 28, 2026

Use a instrução ALTER TABLE para modificar uma tabela particionada no Hologres. Você pode renomear a tabela particionada, anexar uma tabela independente como partição filha ou desanexar uma partição filha existente da tabela pai.

Sintaxe

ALTER TABLE [IF EXISTS] table_name RENAME TO new_table_name;
ALTER TABLE [IF EXISTS] table_name ATTACH PARTITION new_partition_name FOR VALUES IN (<string_literal>);
ALTER TABLE [IF EXISTS] table_name DETACH PARTITION partition_name;

Parâmetros

Parâmetro

Descrição

RENAME

Renomeia a tabela particionada.

ATTACH PARTITION new_partition_name FOR VALUES IN (<string_literal>)

Anexa uma tabela existente a uma tabela particionada como partição filha. A tabela deve corresponder à política de particionamento e à chave de particionamento da tabela pai. Restrições adicionais se aplicam — consulte Limites.

DETACH PARTITION partition_name

Desanexa uma partição de uma tabela particionada. A partição desanexada torna-se uma tabela independente, sem relação com a tabela pai anterior.

Limites

Requisitos de colunas

Antes de anexar uma tabela, verifique se ela atende aos seguintes requisitos de colunas:

  • A tabela deve ter o mesmo número de colunas que a tabela particionada pai.

  • O tipo de dados de cada coluna deve corresponder ao da coluna equivalente na tabela pai.

  • A tabela deve satisfazer todas as restrições NOT NULL definidas na tabela pai. Para partições de lista que não aceitam valores NULL, adicione uma restrição NOT NULL à coluna da chave de particionamento, exceto quando a chave primária for uma expressão.

Regras de propriedades ao anexar uma partição filha

Ao anexar uma tabela a uma tabela particionada, o Hologres valida a compatibilidade das propriedades entre a tabela filha e a tabela pai. Se alguma propriedade obrigatória não corresponder, a operação falhará imediatamente e retornará um erro.

Três regras de compatibilidade se aplicam:

  • Consistência obrigatória: A propriedade da tabela filha deve ser idêntica à da tabela pai. Em caso de divergência, a operação de anexação falhará e você deverá criar uma nova tabela filha com o valor correto da propriedade.

  • Consistência opcional: A propriedade da tabela filha pode diferir da tabela pai. Se a propriedade não for especificada na tabela filha, esta herdará o valor da tabela pai. Caso seja especificada, o valor definido será mantido.

  • Inclusão de colunas indexadas da tabela pai: A tabela filha deve indexar todas as colunas indexadas pela tabela pai. Além disso, a tabela filha pode indexar colunas adicionais não indexadas na tabela pai.

A tabela a seguir lista todas as propriedades e as regras aplicáveis ao anexar uma partição filha:

Categoria

Propriedade

Descrição

**Herdada por CREATE TABLE PARTITION OF**

Regra ao anexar

Mantida após desanexar

Propriedade da tabela

orientation

Formato de armazenamento da tabela

Sim

Consistência obrigatória

Sim

Propriedade da tabela

table_group

Grupo de tabelas ao qual a tabela pertence; também determina a contagem de shards

Sim

Consistência obrigatória

Sim

Propriedade da tabela

time_to_live_in_seconds

Período de tempo de vida (TTL) da tabela

Sim

Consistência opcional. Se não especificada na tabela filha, herda da tabela pai. Se especificada, o valor definido é mantido.

Sim

Índice

primary key

Chave primária da tabela

Sim

Consistência obrigatória

Sim

Índice

distribution key

Chave de distribuição da tabela

Sim

Consistência obrigatória

Sim

Índice

clustering_key

Índice clusterizado: especifica colunas e sua ordem de armazenamento

Sim

Consistência obrigatória

Sim

Índice

event_time_column

Chave de segmento da tabela

Sim

Consistência obrigatória

Sim

Índice

bitmap_columns

Índices bitmap da tabela

Sim

Deve incluir colunas indexadas da tabela pai

Sim

Índice

dictionary_encoding_columns

Colunas codificadas por dicionário da tabela

Sim

Deve incluir colunas indexadas da tabela pai

Sim

Índice

binlog_level

Indica se o log binário está ativado

Sim

Consistência obrigatória

Sim

Índice

proxima_vectors

Índices vetoriais da tabela

Sim

Deve incluir colunas indexadas da tabela pai

Sim

Restrição de coluna

nullable

Restrição NOT NULL

Sim

Consistência obrigatória

Sim

Restrição de coluna

default value

Restrição de valor padrão

Sim

Consistência obrigatória

Sim

Exemplos

Operações básicas

Os exemplos a seguir demonstram como renomear uma tabela particionada, anexar uma partição e desanexar uma partição.

-- Rename a partitioned table.
alter table holo_test rename to my_holo_test;

-- Attach the table named my_table as a partition of the table named holo_table.
alter table holo_table attach partition my_table for values in ('2015');

-- Detach the child partitioned table holo_test from the parent partitioned table all_test.
alter table all_test detach partition holo_test;

Substituir uma partição filha existente

Use uma transação para substituir atomicamente uma partição filha existente por novos dados. Esse padrão desanexa a partição antiga, renomeia-a como backup, renomeia a nova tabela para ocupar seu lugar e, em seguida, anexa a nova partição — tudo dentro de um único bloco de transação.

Etapa 1: Criar e popular a tabela de substituição.

-- Create a temporary table.
begin;
drop table if exists "table_20210101_new";
CREATE TABLE "table_20210101_new" (
  "colA" integer NOT NULL,
  "colB" text NOT NULL,
  "colC" numeric(38,10) NOT NULL,
  "ds" text NOT NULL,
  "process_time" timestamptz NOT NULL DEFAULT now()
);
call set_table_property('table_20210101_new', 'orientation','column');
call set_table_property('table_20210101_new', 'distribution_key','"colA"');
call set_table_property('table_20210101_new', 'event_time_column','process_time');
commit;

--- Import data to the temporary table.
insert into "table_20210101_new" select * from ...;

Etapa 2: Trocar a partição antiga pela nova.

--- Replace an existing child partitioned table with the temporary table.
begin;
-- Detach an existing child partitioned table from the parent partitioned table and make the child partitioned table an independent table.
ALTER TABLE table_parent DETACH PARTITION table_20210101;
-- Rename the independent table.
ALTER TABLE table_20210101 RENAME to table_20210101_backup;
-- Rename the temporary table as the original child partitioned table.
ALTER TABLE table_20210101_new RENAME to table_20210101;
-- Attach the new child partitioned table to the parent partitioned table.
ALTER TABLE table_parent ATTACH PARTITION table_20210101 FOR VALUES in ("20210101");
commit;