On Thu, 20 Dec 2018 at 09:08, Stephen Amell <stephenam...@inbox.lv> wrote:
>
> Hola Lista!
>
> Como andan?
>
> Hoy les escribo porque tengo un problema con el nuevo particionamiento
> de postgres 11, el objetivo es conservar la PK de una tabla
> particionando por fecha.
>
> En un prototipo cree una tabla, copiando la idea de la original:
>
> CREATE TABLE public.daf
> (
>      id serial NOT NULL,
>      fecha timestamp without time zone,
>      testo character varying(100),
>      PRIMARY KEY (id)                       ---> le digo que pk quiero
> ) partition by range ( fecha );            ---> y por que quiero particionar
>
> No le gusta, ya lo veía venir por lo visto en la docu:
>
> ERROR:  insufficient columns in PRIMARY KEY constraint definition
> DETAIL:  PRIMARY KEY constraint on table "daf" lacks column "fecha"
> which is part of the partition key.
> SQL state: 0A000
>
[...]
>
> Hasta acá, todo esperado, tengo dos id 5 para dos fechas distintas, pero
> me mata no poder conservar la pk que necesito que es solo el campo ID.
>

Esto es un problema en 10, pero no en 11. La definición correcta de la tabla es:

CREATE TABLE public.daf
(
     id serial NOT NULL,
     fecha timestamp without time zone,
     testo character varying(100),
     PRIMARY KEY (id) INCLUDE (fecha)
) partition by range ( fecha );

El include hace que el índice tenga el valor de fecha por lo que el
sistema de particionamiento no molesta pero al no ser parte del índice
la unicidad se verifica solo sobre id.

-- 
Jaime Casanova                      www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Reply via email to