[firebase-br] Desativação de triggers

Luiz Fernando Trevisan luizztrevisan em gmail.com
Qua Jul 17 23:15:56 -03 2019


Você pode salvar um valor em uma variável de contexto antes do update e na
trigger ignorar caso a variável de contexto esteja com determinado valor



rdb$set_context('user-session', 'executando_update_x', 'S')

Na trigger você dá um
rdb$get_context('user-session','executando_update_x')

Se estiver com 'S' você dá um exit

Após executar, limpa a variável

rdb$set_context('user-session', 'executando_update_x', null)


att,
Luiz F. Trevisan

Em qua, 17 de jul de 2019 11:39, Carlos H. Cantu <listas em warmboot.com.br>
escreveu:

> Nunca misture comandos DDL com DML em uma mesma transação! Isso pode
> gerar inclusive corrupção da base.
>
> PS: Se der problema vc tem que tratar na aplicação que está disparando o
> script.
>
> []s
> Carlos H. Cantu
> eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
> www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br
>
> ABJ> Bom dia a todos.
>
> ABJ> Preciso atualizar apenas um campo de "Tabela_A" onde a mesma possui
> uma
> ABJ> trigger de atualização da "Tabela_B", porém o campo que estou
> ABJ> atualizando só é necessário modificação nessa "Tabela_A".
> ABJ> Em uma mesma transação executo os comandos:
>
> ABJ>          a) ALTER TRIGGER nome INACTIVE;
> ABJ>          b) depois o UPDATE necessário e por fim
> ABJ>          c) ALTER TRIGGER nome ACTIVE;
>
> ABJ> Notei que mesmo desabilitando a trigger, o tempo de execução é o
> mesmo,
> ABJ> como se a trigger ainda estivesse ativa.
> ABJ> Fiz um teste colocando um COMMIT após a desativação da trigger e aí o
> ABJ> tempo de execução diminuiu conforme o esperado, porém caso ocorra
> algum
> ABJ> problema durante o UPDATE, a trigger poderá permanecer desativada, o
> que
> ABJ> pra mim seria problemático.
>
> ABJ> Pergunto: Existe alguma maneira de desativar uma trigger dentro de uma
> ABJ> mesma transação?
>
> ABJ> Desde já, muito obrigado.
>
> ABJ> Att,
> ABJ> Antonio Bonelli Junior
> ABJ> ______________________________________________
> ABJ> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> ABJ> Para saber como gerenciar/excluir seu cadastro na lista, use:
> ABJ> http://www.firebase.com.br/fb/artigo.php?id=1107
> ABJ> Para consultar mensagens antigas:
> ABJ> http://www.firebase.com.br/pesquisa_lista.html
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas:
> http://www.firebase.com.br/pesquisa_lista.html
>



Mais detalhes sobre a lista de discussão lista