Galera o processamento de 45 minutos que eu comentei não é o problema,
a função realmente demora muito e vai demorar pois ela executa diversos
calculos matematicos...
o meu problema é que o usuário que está trabalhando não pode esperar
esse tempo, isso tem q ser automático. Existe alguma maneira de
executar em segundo plano usando PL/pgSQL?
Antes
de imprimir lembre-se de sua responsabilidade e comprometimento com o
Meio Ambiente
Em 16/12/2010 16:25, Osvaldo Kussama escreveu:
Em 16/12/10, [email protected]<[email protected]> escreveu:
CREATE OR REPLACE FUNCTION "public"."f_rep_tarefa_concluida" (
)
RETURNS trigger AS
$body$
DECLARE
rec RECORD;
dataini TIMESTAMP(0);
datafim TIMESTAMP(0);
flag BOOLEAN;
BEGIN
IF OLD.estado = '0' and NEW.estado = '1' THEN
perform zera_calc_rep(NEW.idrepesportesmt);
FOR rec IN select idrel_tarefasrep, idprog from rel_tarefasrep
where idrepesportesmt = NEW.idrepesportesmt LOOP
dataini = now();
flag = f_rodar_reportagem(NEW.idrepesportesmt, rec.idprog);
datafim = now();
IF flag = true THEN
update rel_tarefasrep set
rodado = true
where idrel_tarefasrep = rec.idrel_tarefasrep;
-- insert into hist_relatorio_reportagem values (0,
rec.idrel_tarefasrep, dataini, datafim, '', '0');
END IF;
END LOOP;
END IF;
RETURN NULL;
END;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100;
Apenas uma observação:
Você efetivamente deseja que o conteúdo de dataini e datafim seja o
momento do início da transação?
Fica difícil comentar alguma coisa sem saber se "zera_calc_rep" e
"f_rodar_reportagem" envolvem um processamento demorado ou não, se
"select idrel_tarefasrep, idprog from rel_tarefasrep where
idrepesportesmt = NEW.idrepesportesmt" retorna um volume astronômico
de registros ou não.
É uma trigger AFTER?
O auto-vacuum está devidamente configurado?
Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
|
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral