[firebase-br] Trigger para definir o valor de uma coluna para 0 (zero) ao atualizar o registro

Fernando Pereira fernandotoosp em gmail.com
Seg Fev 20 21:12:01 -03 2017


Muito obrigado, Renato!
Fiz vários testes e o trigger agora faz exatamente o que eu precisava!!!

Obrigado também ao Carlos, pela dica. O problema é que eu defini o campo
STATUS como DEFAULT 0, acredito que por isso não estava funcionando o teste
(IF NULL).

Valeu muito, pessoal!!

Abraços!

Fernando



Em 20 de fevereiro de 2017 17:25, Renato Felix de Almeida <
renatofelixalmeida em gmail.com> escreveu:

> Deixa eu ver se entendi
>
> a) O Status = 1 informa que o arquivo foi enviado para o servidor
> b) O Status = 0 informa que ele deve ser enviado ao servidor.
> c) Qualquer alteração quando o status é 1 (já foi enviado) muda o status
> para 0 (deve ser enviado)
> d) Ao ser inserido o campo tem status 0? ou é null?
>
> Acho que isso aí vai resolver o problema.
>
> IF (OLD.ST_UPDATE_WEB=1) THEN NEW.ST_UPDATE_WEB = 0;
>
> Imagine o cenário o status é zero, você tem que enviar os dados para o
> servidor. Depois de enviar você executa. Seu update.
>
> UPDATE CAMPANHA SET_ST_UPDATE_WEB = 1, DT_CAMPANHA_FINAL = '2017-01-20'
> WHERE
> ID_CAMPANHA = 1;
>
> A trigger vai verificar se status anterior era 1, o que não é verdade
> porque era zero então ele não vai atualizar o status.
>
> Quando você fizer alguma modificação no campo o status anterior
> (OLD.ST_UPDATE_WEB)
> vai ser igual a 1 e o registro vai ser marcado como 0 para enviar para o
> servidor.
>
> Importante você definir o status inicial para 0 ou 1 conforme sua
> necessidade.
>
> Em 20 de fevereiro de 2017 13:18, Fernando Pereira <
> fernandotoosp em gmail.com>
> escreveu:
>
> > Obrigado pela resposta, Carlos, mas ainda não funcionou.
> >
> > quando eu executo o script sugerido:
> > UPDATE CAMPANHA SET_ST_UPDATE_WEB = NULL_, DT_CAMPANHA_FINAL =
> '2017-01-20'
> > WHERE ID_CAMPANHA = 1;
> > é disparado o trigger, que testa se o NEW.ST_UPDATE_WEB é nulo (e no
> caso,
> > é), e atualiza o campo para 0. Ou seja, da mesma forma que eu não
> conseguia
> > definir o valor do campo para 1, também não consigo definir para nulo
> >
> >
> > Em 20 de fevereiro de 2017 12:57, Carlos Andrade <krlosgilson em gmail.com>
> > escreveu:
> >
> > > Desculpas, desconsidere a resposta anterior. É que tem esse detalhe que
> > > você mencionou e só agora vi. Você precisa fazer o seguinte... setar o
> > > campo ST_UPDATE_WEB para NULL, de modo que fique assim:
> > >
> > > ---- Ao fazer qualquer UPDATE no registro, quero que o campo
> > ST_UPDATE_WEB
> > > seja setado novamente para '0' (o que agora vai acontecer :)
> > > UPDATE CAMPANHA SET_ST_UPDATE_WEB = NULL_, DT_CAMPANHA_FINAL =
> > > '2017-01-20' WHERE ID_CAMPANHA = 1;
> > >
> > > Agora seu trigger (CAPANHA_BU) vai funcionar da forma como pretende.
> > >
> > >
> > > Em 20/02/2017 11:24, Fernando Pereira escreveu:
> > >
> > >> Obrigado pela resposta, Renato.
> > >>
> > >> O problema é que eu preciso setar este campo para 1, logo após
> "subir" o
> > >> registro para a nuvem, para que seja desprezado nos próximos "uploads"
> > >> Se eu tirar o IF, a trigger irá definir este campo sempre como 0, em
> > >> qualquer update, mesmo que o update precise definir como 1.
> > >>
> > >> Abraços
> > >>
> > >
> > > ______________________________________________
> > > 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/pes
> > > quisa_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
> >
>
>
>
> --
> Renato
> renatofelixalmeida em gmail.com
> ______________________________________________
> 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