trigger instead of VS on update

05/05/2008 - 21:06 por Juanjo | Informe spam
Buenas tardes

Alguien me podría confirmar lo siguiente:

Utilizando on update, ¿Puedo recuperar el valor originar de un registro?

Entiendo que si utilizo on update, al acceder al registro por su id, tendré
los mismos valores en la tabla inserted que en la tabla original, puesto que
se ha realizado la actualización previamente.

Lo que quiere decir, que si quiero poder comparar los valores originales de
la tabla con los que me vienen en inserted, tengo que utilizar instead of,
para poder recuperar "original y proposed" (por llamarlo de alguna manera),
hacer la comparación, las operaciones que desee, y posteriormente hacer el
update de forma manual.

Muchas gracias a todos y un saludo

Juanjo

Preguntas similare

Leer las respuestas

#1 Gux (MVP)
05/05/2008 - 22:01 | Informe spam
La forma de tener acceso, en un momento dado, a los valores previo y actual
de un dato durante un UPDATE es usando un trigger y accediendo a los
conjuntos de datos Deleted e Inserted respectivamente.

Eso puede hacerse en un trigger normal o en un trigger "instead of".

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/p...o.larriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Juanjo" wrote:

Buenas tardes

Alguien me podría confirmar lo siguiente:

Utilizando on update, ¿Puedo recuperar el valor originar de un registro?

Entiendo que si utilizo on update, al acceder al registro por su id, tendré
los mismos valores en la tabla inserted que en la tabla original, puesto que
se ha realizado la actualización previamente.

Lo que quiere decir, que si quiero poder comparar los valores originales de
la tabla con los que me vienen en inserted, tengo que utilizar instead of,
para poder recuperar "original y proposed" (por llamarlo de alguna manera),
hacer la comparación, las operaciones que desee, y posteriormente hacer el
update de forma manual.

Muchas gracias a todos y un saludo

Juanjo


Respuesta Responder a este mensaje
#2 Juanjo
05/05/2008 - 23:37 | Informe spam
Muchas gracias Gustavo. Tendré que revisar mi código entonces, porque estoy
utilizando un triguer for update, pero cuando modifico un valor de un campo
y trato de recuperarlo, el valor es el mismo en el registro original y en el
de la tabla temporal inserted. Hago algo parecido a lo siguiente:

update Tabla1 Set Campo1 = 'valorY' where idTabla1 = 5


CREATE trigger tr_Prueba on Tabla1
FOR update
AS BEGIN

Declare @Campo1 varchar
Declare @Campo1orginal as varchar

Select @Campo1 = Campo1 from Tabla1 where idTabla1 = 5
Select @Campo1original = Campo1 from inserted

END

Y el problema es que cuando recupero los valores, @Campo1 y @Campo1original
tienen "valorY"

En cualquier caso, muchas gracias


"Gux (MVP)" escribió en el mensaje de
noticias news:
La forma de tener acceso, en un momento dado, a los valores previo y
actual
de un dato durante un UPDATE es usando un trigger y accediendo a los
conjuntos de datos Deleted e Inserted respectivamente.

Eso puede hacerse en un trigger normal o en un trigger "instead of".

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/p...o.larriera
Respuesta Responder a este mensaje
#3 Penta
06/05/2008 - 18:12 | Informe spam
Hola
La tabla Inserted tiene el valor nuevo, el valor origianal o mas bien
dichoi antiguo esta en la tabla deleted

Atte.
Penta.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida