PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Anexar partição LIST à tabela existente no postgres 11


Citação do manual

Portanto, você não pode alterar uma tabela não particionada existente para uma tabela particionada.

Você precisa criar uma nova tabela (com um nome diferente) particionada, criar todas as partições necessárias e copiar os dados da tabela antiga para a nova tabela particionada.

Algo como:
create table clients_partitioned
(
  .... all columns ...
)
PARTITION BY LIST  (client_id);

Em seguida, crie as partições:
create table clients_1 
   partition of clients_partioned
   values in (1,2,3);

create table clients_1 
   partition of clients_partioned
   values in (4,5,6);

Em seguida, copie os dados:
insert into clients_partitioned
select *
from clients;

Feito isso, você pode descartar a tabela antiga e renomear a nova tabela:
drop table clients;
alter table clients_partitioned rename to clients;

Não se esqueça de recriar suas chaves estrangeiras e índices.