Pessoal, Desculpem....Foi vacilo mesmo ! Na mudança de um servidor pra outro, a tabela foi criada com outro usuário.
Osvaldo Kussama wrote: > > Em 26 de abril de 2010 10:04, letgaude <[email protected]> escreveu: >> >> 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 ? >> > > > Você se certificou se o usuário que está tentando inserir tem os > privilégios necessários para executar tal operação? > Repare que sua função está definida com SECURITY INVOKER e não com > SECURITY DEFINER. > > Osvaldo > _______________________________________________ > 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-tp28287912p28367810.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
