Olá,
Para o problema citado tenho :
1. Tabela principal (não coloquei todos os campos, porque ficaria muito
grande)
CREATE TABLE "public"."stg1_nfe" (
"sq_nfe" SERIAL,
"ide_Id" VARCHAR(44) NOT NULL,
"ide_indPag" VARCHAR(2) NOT NULL,
"ide_mod" VARCHAR(2) NOT NULL
CONSTRAINT "S1NF_PK" PRIMARY KEY("sq_nfe") USING INDEX TABLESPACE
"tbspIndices"
) WITHOUT OIDS;
2. Tabelas Particionadas até o mes 12 (200612)
CREATE TABLE stg1_nfe_200609 (
CHECK ("ideAnoMesReceb" = '200609')) INHERITS (public.stg1_nfe);
Foram criadas também indices sobre o campo "ideAnoMesReceb" das tabelas
particionadas.
3. Função
CREATE OR REPLACE FUNCTION "public"."P_ParticionarDadosNFe_I" (
)
RETURNS trigger AS
$body$
BEGIN
IF (NEW."ideAnoMesReceb" = '200609') THEN
INSERT INTO public.stg1_nfe_200609 VALUES (NEW.*);
ELSIF (NEW."ideAnoMesReceb" = '200610') THEN
INSERT INTO public.stg1_nfe_200610 VALUES (NEW.*);
ELSIF (NEW."ideAnoMesReceb" = '200611') THEN
INSERT INTO public.stg1_nfe_200611 VALUES (NEW.*);
ELSIF (NEW."ideAnoMesReceb" = '200612') THEN
INSERT INTO public.stg1_nfe_200612 VALUES (NEW.*);
END IF;
RETURN NULL;
EXCEPTION
WHEN OTHERS THEN
INSERT INTO public.tb_excecoes
(
"tmsData",
"vchNomeFuncao",
"txtErro",
"vchAnoMes"
)
VALUES (
NOW(),
'P_NFe_PersitirParticao_I ',
SQLERRM,
NEW."ideAnoMesReceb"
);
RETURN NULL;
END;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100;
4. Trigger
CREATE TRIGGER "TRG_ParticionarDadosNFe" BEFORE INSERT
ON "public"."stg1_nfe" FOR EACH ROW
EXECUTE PROCEDURE "public"."P_ParticionarDadosNFe_I"();
5. Insert
Como eu acesso os dados das tabelas particionadas através da tabela pai,
faço o insert com select da tabela pai para outra tabela que tem a mesma
estrutura da tabela pai, para faciliar o processo de agregação.
INSERT INTO public.stg1_nfe_proc
(
sq_nfe,
"ide_Id",
"ide_indPag",
ide_mod)
SELECT
sq_nfe,
"ide_Id",
"ide_indPag",
ide_mod)
FROM public.stg1_nfe
WHERE "ideAnoMesReceb" = '200609';
E isso é que não funciona, ou seja não insere nada. Apesar de que, se eu
executar somente o select funciona. É o que eu não estou entendendo. Estou
fazendo alguma coisa errada ? Deu para entender o problema ?
Grata,
Letícia
JotaComm wrote:
>
> Olá,
>
> Em 20 de abril de 2010 16:37, letgaude <[email protected]> escreveu:
>
>>
>> Gente,
>>
>> Fiz todo o processo de particionamento, conforme orientação da
>> documentação
>> do postgres
>> (http://www.postgresql.org/docs/8.4/interactive/ddl-partitioning.html),
>> utilizando trigger, pois trabalhamos aqui com insert linha a linha. Gerei
>> 12
>> tabelas a partir da tabela principal, uma para cada mês. A partir da
>> tabela
>> principal fazemos insert em outra tabela intermediaria para tratamento de
>> sumarizações. O que eu não estou conseguindo fazer agora é este processo
>> de
>> inserção. O postgres retorna Query returned successfully: 0 rows
>> affected,
>> 188 ms execution time., e nao insere nada. Existe algum segredo para
>> fazer
>> insert com select em tabelas particionadas, como existe pra ver somente
>> os
>> dados da tabela principal (select * from only tabela_pai) ? Pq eu
>> simplesmente faço algo como por ex. :
>>
>> INSERT INTO public.tabela2
>> (campo1, campo2)
>> select campo1, campo2
>> from tabela_pai
>> where mes = 12
>>
>
> Não existe segredo nenhum. Se você seguir o descrito no manual você irá
> conseguir o resultado desejado.
>
> Para acessar os dados da tabela pai você precisa utilizar a cláusula ONLY
> na
> tabela pai, conforme mesmo você citou no seu texto.
>
> Agora para que possamos ajudar é necessário algumas informações:
>
> - Função que você desenvolveu
> - Trigger
> - INSERT que você está executando e não está funcionando.
>
>>
>> Obrigada.
>> --
>> View this message in context:
>> http://old.nabble.com/Insert-a-partir-de-tabela-particionada-tp28287912p28287912.html
>> Sent from the PostgreSQL - Brasil mailing list archive at Nabble.com.
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>
>
> Atenciosamente
> --
> JotaComm
> http://jotacomm.wordpress.com
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
--
View this message in context:
http://old.nabble.com/Insert-a-partir-de-tabela-particionada-tp28287912p28364393.html
Sent from the PostgreSQL - Brasil mailing list archive at Nabble.com.
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral