On Thu, Jul 3, 2014 at 5:10 PM, Bruno Silva <[email protected]> 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
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral