Sincronizando Informações entre 2 BD's iguais

Delphi

22/06/2011

Bom gente, eu tenho na minha aplicação uma Classe para sincronizar 1 banco com o outro, na verdade esta classe apenas copia os dados de um banco para o outro pelo seguinte método : 
 Procura no banco 1 se o dado existe, se existir apenas substitui pelo dado do banco 2, caso não exista ele cria o dado. 
 Porém há um grande problema nisso, AS TRIGGERS. Como minha aplicação trabalha com controle de estoque e tudo mais, quando faço o sincronismo as triggeers são ativadas, e gostaria que elas não fossem ativadas nessa hora.
 Alguma solução ?
Ronaldo Lanhellas

Ronaldo Lanhellas

Curtidas 0

Respostas

Jonathan Campos

Jonathan Campos

22/06/2011

desabilite a trigger quando vc for fazer a sincronização, e habilite novamente após terminar o processo.

veja se o link te ajuda:
https://www.devmedia.com.br/post-1378-Como-desabilitar-uma-trigger-temporariamente.html
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

22/06/2011

Bom .. não entendi muito bem o comando 
 ALTER TABLE tablename DISABLE TRIGGER ALL-- do work here
ALTER TABLE tablename ENABLE TRIGGER ALL 

 Primeiro ... oque  informar no tablename ? o palavra reservada ALL significa que todas as triggers serão desabilitadas ?

 
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

22/06/2011


  Funcionou da seguinte forma: 
 ALTER TRIGGER nome_da_trigger INACTIVE; 

 porém funciona apenas para 1 trigger, isto é, eu teria que fazer uma por uma. Gostaria de fazer em todas de uma vez só ! 
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

22/06/2011

resolvido com o seguinte:   update RDB$TRIGGERS set RDB$TRIGGER_INACTIVE = 1where rdb$trigger_source is not null and ((rdb$system_flag = 0) or
(rdb$system_flag is null))
desabilita todas as triggers no banco
GOSTEI 0
POSTAR