[firebase-br] Old or new

W O sistemas2000profesional em gmail.com
Qua Nov 6 01:40:23 -03 2013


Si en tu INSERT no especificas el valor de una columna hay dos
posibilidades:

1. Si esa columna tiene definido un valor DEFAULT, entonces ese valor será
insertado
2. Si esa columna no tiene definido un valor DEFAULT, entonces NULL será
insertado

En un trigger BEFORE INSERT no existen las seudovariables OLD, así que no
puedes usarlas.

En un trigger BEFORE UPDATE sí existen las seudovariables OLD y también las
seudovariables NEW.

En un trigger BEFORE UPDATE, si no se cambió el valor de una columna NEW
siempre será igual a OLD.

Por lo tanto, si escribes:
INSERT INTO MiTabla (Columna1, Columna2, Columna3, ...) VALUES
(NEW.Columna1, NEW.Columna2. NEW.Columna3, ...)

*todas* las columnas serán insertadas, no solamente las que tengan valores
NEW y OLD diferentes.

Saludos.

Walter.




2013/11/5 José Mauricio Barbisan Zottis <bzottis em ig.com.br>

> Obrigado Walter, na verdade sei que old é o valor velho e new o valor
> alterado, mas a situação é a seguinte;
> tenho um replicador para um site
> e tenho que monitorar alguns campos de algumas tabelas para ver se não
> houve alteração, se tiver sido alterado ou inserido novo Cliente, por
> exemplo, cadastro em uma outra tabela, e essa outra tabela é varrida e
> replicada para o site, depois o registro é apagado da tabela de replicação.
>
> então, a tabela cliente tem muitos campos, e o código para verificar se
> houve alteração( if new.campo <> old.campo) seria gigantesco.
>
> por isso pensei em fazer sempre o new, mas daí seria inserido somente
> campos que tiveram alterações ou todos os campos?
>
>
>
>
> 2013/11/5 W O <sistemas2000profesional em gmail.com>
>
> > Las pseudo variables OLD y NEW se utilizan solamente dentro de los
> > triggers. Te permiten conocer cual era el valor "antes" de la
> actualización
> > y el valor actual, el que se quiere guardar.
> >
> > En tu INSERT solamente es obligatorio especificar el valor de las
> columnas
> > que están declaradas como NOT NULL. Las columnas que pueden contener NULL
> > no es necesario especificarlas (pero si no las especificas se guardará
> NULL
> > en ellas).
> >
> > No necesitas verificar que una columna haya cambiado su valor para
> > guardarla. Siempre lo que se guardará será el contenido de la
> > pseudovariable NEW
> >
> > O sea que escribir dentro de un trigger:
> > INSERT INTO MiTabla (Columna1, Columna2, Columna3) VALUES (NEW.Columna1,
> > NEW.Columna2, NEW.Columna3)
> >
> > es perfectamente válido.
> >
> > Desde luego que "MiTabla" es otra tabla, no la que corresponde al
> trigger.
> >
> > Saludos.
> >
> > Walter.
> >
> >
> >
> >
> >
> > 2013/11/5 José Mauricio Barbisan Zottis <bzottis em ig.com.br>
> >
> > > Pessoal, to com uma dúvida boba, mas surgiu....
> > >
> > > Preciso cadastrar em uma outra tabela o cliente que sofreu
> > alteração(Quase
> > > todos os campos)
> > >
> > > é preciso fazer a distinção entre o new e o old para pegar o valor ou
> > posso
> > > colocar ctudo como new/
> > >
> > > exemplo;
> > > Consideremos que o campo razao_social não foi alterado e o campo
> > > Nome_fantasia foi. Poderia fazer direto assim:
> > >
> > > insert into clientes(cod_cliente, Razao_social,
> > > nome_fantasia)values(new.cod_cliente, new.razao_social,
> > new.nome_fantasia)
> > > pois senão precisarei fazer a verificação de um monte de campos.
> > >
> > > obrigado
> > > ______________________________________________
> > > 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://firebase.com.br/pesquisa
> > >
> > ______________________________________________
> > 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://firebase.com.br/pesquisa
> >
> ______________________________________________
> 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://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista