On Thu, Jul 3, 2014 at 5:10 PM, Bruno Silva <bemanuel...@gmail.com> wrote:

> begin;
> CREATE TABLE base.filho_2013 (LIKE base.pai INCLUDING ALL) INHERITS
> (base.pai);
> ALTER TABLE base.filho_2013 no inherit base.pai;
> INSERT INTO base.filho_2013 select * from base.pai WHERE dta between
> '2013-01-01 00:00:00' and '2013-12-31 23:59:59';
> DELETE FROM base.pai where dta BETWEEN '2013-01-01 00:00:00' and
> '2013-12-31 23:59:59';
> ALTER TABLE base.filho_2013 inherit base.pai;
> ALTER TABLE base.filho_2013 ADD CONSTRAINT filho_check_2013 CHECK ( dta
> between '2013-01-01 00:00:00' AND '2013-12-31 23:59:59' );
> COMMIT;
>

Primeiro, não precisa de colocar o INHERIT, tirar (ALTER TABLE ... NO
INHERIT) e depois colocar novamente (ALTER TABLE ... INHERIT). Para deletar
os dados *somente* da tabela pai, você pode usar o ONLY:

    DELETE FROM ONLY(base.pai) where dta BETWEEN '2013-01-01 00:00:00' and
'2013-12-31 23:59:59';

Segundo, você esqueceu de adicionar uma check constraint nas tabelas filhas
para que o constraint exclusion funcione:

    ALTER TABLE base.filho_2013 ADD CHECK(dta BETWEEN '2013-01-01 00:00:00'
and '2013-12-31 23:59:59');

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a