Se você passar a trigger para AFTER ao invés de BEFORE suas chances de não
ter lock "aumentam", mas não "desaparecem". Analisando por cima suas
necessidades, não acredito que a melhor solução seja realmente adicionar
uma coluna em uma trigger, isso me parece uma tarefa administrativa, ou
seja, sempre adicione a coluna (talvez junto com a execução do comando
CREATE TRIGGER) e na trigger simplesmente considere que ela já existe (pode
até fazer a verificação e dar um RAISE EXCEPTION caso não exista).

PS: Caso a trigger seja genérica para várias tabelas, você pode pensar em
usar herança nessas tabelas para organizar melhor as coisas.

Atenciosamente,
--
Matheus de Oliveira

Bacharelado em Ciências de Computação
Laboratório de Computação de Alto Desempenho -
LCAD<http://www.lcad.icmc.usp.br/>
Instituto de Ciências Matemáticas e de Computação -
ICMC<http://www.icmc.usp.br/>
Universidade de São Paulo - USP <http://www.sc.usp.br/>




On Fri, Mar 16, 2012 at 10:07 AM, Eloi Ribeiro <[email protected]>wrote:

> O melhor será separar esta função em duas:
> A primeira que verifique se os campos existem e se não os criam.
> E a segunda como disparador para que se actualizem com os inserts e
> updates.
> Obrigado pela ajuda!
>
>
> Eloi Ribeiro
> GIS Analyst
> 39,45º -0,40º
> flavors.me/eloiribeiro
>
>
> No dia 16 de Março de 2012 13:04, Flavio Henrique Araque Gurgel <
> [email protected]> escreveu:
>
> > Cancelando as demais transações/conexões também resolve seu problema
>> > *se, e somente se* isto não for um problema no seu cenário.
>>
>> Minha experiência com DDL dentro de funções é de resultado sempre
>> inesperado.
>> Se a função é específica para ser executada em horário controlado,
>> geralmente é uma mão na roda. DBAs de madrugada sempre se dão melhor
>> executando funções do que comandos mais complexos ou scripts.
>> Já se a função é para ser chamada automaticamente por causa de uma
>> necessidade de uma aplicação ou usuário, a chance de lock é
>> monstruosa, e é o que está ocorrendo com o colega.
>>
>> []s
>> Flavio Gurgel
>> _______________________________________________
>> 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
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a