sql >> Base de Datos >  >> RDS >> PostgreSQL

Adjunte la LISTA de particiones a la tabla existente en postgres 11

Cita del manual

Por lo tanto, no puede cambiar una tabla no particionada existente a una tabla particionada.

Debe crear una nueva tabla (con un nombre diferente) que esté particionada, crear todas las particiones necesarias y luego copiar los datos de la tabla anterior a la nueva tabla particionada.

Algo como:

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

Luego crea las particiones:

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);

Luego copie los datos:

insert into clients_partitioned
select *
from clients;

Una vez hecho esto, puede soltar la tabla anterior y cambiar el nombre de la nueva tabla:

drop table clients;
alter table clients_partitioned rename to clients;

No olvide volver a crear sus índices y claves foráneas.