Sincronizando Informações entre 2 BD's iguais
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 ?
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
Curtidas 0
Respostas
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
veja se o link te ajuda:
https://www.devmedia.com.br/post-1378-Como-desabilitar-uma-trigger-temporariamente.html
GOSTEI 0
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 ?
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
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
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
(rdb$system_flag is null))
desabilita todas as triggers no banco
GOSTEI 0