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

Renato Felix de Almeida renatofelixalmeida em gmail.com
Seg Fev 20 17:25:48 -03 2017


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



Mais detalhes sobre a lista de discussão lista