se puede saber que campo se modifica con un update ?

30/03/2005 - 16:25 por Mennegguzzi | Informe spam
Hola a todos, tengo la siguiente consulta:

tengo que hacer un trigger que se ejecute cuando suceda el evento Update en
una determinada tabla.
hasta ahí estoy bien,

el tema es que necesito que el trigger se ejecute solo si el update modifica
un determinado campo de esa tabla.

hay alguna manera de saber que campo se está modificando ?

desde ya muchas gracias por su ayuda

saludos

Pablo

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
30/03/2005 - 16:31 | Informe spam
Chequea "CREATE TRIGGER" en los libros en linea, ahi encontraras ejemplos de
como consultar si la columna X formo parte de la sentencia UPDATE que disparo
el trigger.

- Para chequear una columna en especifico

IF UPDATE (column)

- Varias columnas

IF (COLUMNS_UPDATED())


AMB



"Mennegguzzi" wrote:

Hola a todos, tengo la siguiente consulta:

tengo que hacer un trigger que se ejecute cuando suceda el evento Update en
una determinada tabla.
hasta ahí estoy bien,

el tema es que necesito que el trigger se ejecute solo si el update modifica
un determinado campo de esa tabla.

hay alguna manera de saber que campo se está modificando ?

desde ya muchas gracias por su ayuda

saludos

Pablo



Respuesta Responder a este mensaje
#2 Alejandro Mesa
30/03/2005 - 17:27 | Informe spam
Trata,

create trigger tr_ventas_upd on dbo.ventas
for update
as
set nocount on

if @@rowcount = 0 return

if update(FechaEnt)
begin
update ventas
...
end
go

No entiendo la sentencia UPDATE que debes correr, pues estas actualizando la
columna [FechaEnt] con el mismo valor con el que se actualizo, lo estas
haciendo dos veces.

update Ventas
set FechaEnt = inserted.FechaEnt
where Modulo = inserted.Modulo and
Codigo = inserted.Codigo and
Numero = inserted.Numero and
Tipo = inserted.Tipo and
CodArt = inserted.CodArt and
Item = inserted.Item




AMB

"Mennegguzzi" wrote:

Alejandro, lo leo en la ayuda, pero no entiendo como usar columns_updated en mi caso,

quizás no lo expliqué muy claro, yo necesito que se dispare un trigger cuando una determinada columna de una tabla sea modificada por un update (generado desde la aplicación, no por otro trigger)

la sentencia que tengo que poner en el trigger es la siguente:

update Ventas
set FechaEnt = inserted.FechaEnt
where Modulo = inserted.Modulo and
Codigo = inserted.Codigo and
Numero = inserted.Numero and
Tipo = inserted.Tipo and
CodArt = inserted.CodArt and
Item = inserted.Item

y se debería disparar siempre que desde la aplicación se actualice el campo FechaEnt de la misma tabla Ventas

qué debería poner antes para poder chequear esa condición.

Por ahí leí que cuando se hace un Update lo que hay es una tabla Deleted y una Inserted, que se distinquen por las modificaciones hechas con el Update. Quizás debería chequear que el campo FechaEnt sea distinto en las dos tablas.
Pero no estoy seguro de esto.

Saludos y muchas gracias por la ayuda

Pablo


"Alejandro Mesa" escribió en el mensaje news:
> Chequea "CREATE TRIGGER" en los libros en linea, ahi encontraras ejemplos de
> como consultar si la columna X formo parte de la sentencia UPDATE que disparo
> el trigger.
>
> - Para chequear una columna en especifico
>
> IF UPDATE (column)
>
> - Varias columnas
>
> IF (COLUMNS_UPDATED())
>
>
> AMB
>
>
>
> "Mennegguzzi" wrote:
>
>> Hola a todos, tengo la siguiente consulta:
>>
>> tengo que hacer un trigger que se ejecute cuando suceda el evento Update en
>> una determinada tabla.
>> hasta ahí estoy bien,
>>
>> el tema es que necesito que el trigger se ejecute solo si el update modifica
>> un determinado campo de esa tabla.
>>
>> hay alguna manera de saber que campo se está modificando ?
>>
>> desde ya muchas gracias por su ayuda
>>
>> saludos
>>
>> Pablo
>>
>>
>>
Respuesta Responder a este mensaje
#3 Maxi
30/03/2005 - 18:04 | Informe spam
Hola Ale, un solo comentario. Que una columna forme parte de un Update no
quiere decir que se haya modificado realmente el dato con lo cual no es muy
util esl uso de COLUMNS_UPDATE() :(

Lo que yo hago para verificar 100% esto es comparar ese campo entre a tabla
Inserted y Deleted y si hay diferencias entonces estoy seguro que hay
cambios :-)

En este link explico un poco mas este tema con unos ejemplos:

http://www.microsoft.com/spanish/ms...art168.asp


Salu2
Maxi


"Alejandro Mesa" escribió en el
mensaje news:
Chequea "CREATE TRIGGER" en los libros en linea, ahi encontraras ejemplos
de
como consultar si la columna X formo parte de la sentencia UPDATE que
disparo
el trigger.

- Para chequear una columna en especifico

IF UPDATE (column)

- Varias columnas

IF (COLUMNS_UPDATED())


AMB



"Mennegguzzi" wrote:

Hola a todos, tengo la siguiente consulta:

tengo que hacer un trigger que se ejecute cuando suceda el evento Update
en
una determinada tabla.
hasta ahí estoy bien,

el tema es que necesito que el trigger se ejecute solo si el update
modifica
un determinado campo de esa tabla.

hay alguna manera de saber que campo se está modificando ?

desde ya muchas gracias por su ayuda

saludos

Pablo



Respuesta Responder a este mensaje
#4 Mennegguzzi
30/03/2005 - 18:33 | Informe spam
Maxi, muy bueno el artículo, lo trato de poner en práctica y te cuento

saludos y gracias

Pablo


"Maxi" escribió en el mensaje
news:%
Hola Ale, un solo comentario. Que una columna forme parte de un Update no
quiere decir que se haya modificado realmente el dato con lo cual no es
muy util esl uso de COLUMNS_UPDATE() :(

Lo que yo hago para verificar 100% esto es comparar ese campo entre a
tabla Inserted y Deleted y si hay diferencias entonces estoy seguro que
hay cambios :-)

En este link explico un poco mas este tema con unos ejemplos:

http://www.microsoft.com/spanish/ms...art168.asp


Salu2
Maxi


"Alejandro Mesa" escribió en el
mensaje news:
Chequea "CREATE TRIGGER" en los libros en linea, ahi encontraras ejemplos
de
como consultar si la columna X formo parte de la sentencia UPDATE que
disparo
el trigger.

- Para chequear una columna en especifico

IF UPDATE (column)

- Varias columnas

IF (COLUMNS_UPDATED())


AMB



"Mennegguzzi" wrote:

Hola a todos, tengo la siguiente consulta:

tengo que hacer un trigger que se ejecute cuando suceda el evento Update
en
una determinada tabla.
hasta ahí estoy bien,

el tema es que necesito que el trigger se ejecute solo si el update
modifica
un determinado campo de esa tabla.

hay alguna manera de saber que campo se está modificando ?

desde ya muchas gracias por su ayuda

saludos

Pablo









Respuesta Responder a este mensaje
#5 Mennegguzzi
30/03/2005 - 18:42 | Informe spam
Mi trigger podría quedar así ?

update
Ventas
set
FechaEnt = inserted.FechaEnt
where
Modulo = inserted.Modulo and
Codigo = inserted.Codigo and
Numero = inserted.Numero and
Tipo = inserted.Tipo and
CodArt = inserted.CodArt and
Item = inserted.Item and

inserted.Modulo = deleted.Modulo and
inserted.Codigo = deleted.Codigo and
inserted.Numero = deleted.Numero and
inserted.Tipo = deleted.Tipo and
inserted.CodArt = deleted.CodArt and
inserted.Item = deleted.Item and

inserted.FechEnt <> deleted.FechaEnt


saludos y gracias

Pablo

"Maxi" escribió en el mensaje
news:%
Hola Ale, un solo comentario. Que una columna forme parte de un Update no
quiere decir que se haya modificado realmente el dato con lo cual no es
muy util esl uso de COLUMNS_UPDATE() :(

Lo que yo hago para verificar 100% esto es comparar ese campo entre a
tabla Inserted y Deleted y si hay diferencias entonces estoy seguro que
hay cambios :-)

En este link explico un poco mas este tema con unos ejemplos:

http://www.microsoft.com/spanish/ms...art168.asp


Salu2
Maxi


"Alejandro Mesa" escribió en el
mensaje news:
Chequea "CREATE TRIGGER" en los libros en linea, ahi encontraras ejemplos
de
como consultar si la columna X formo parte de la sentencia UPDATE que
disparo
el trigger.

- Para chequear una columna en especifico

IF UPDATE (column)

- Varias columnas

IF (COLUMNS_UPDATED())


AMB



"Mennegguzzi" wrote:

Hola a todos, tengo la siguiente consulta:

tengo que hacer un trigger que se ejecute cuando suceda el evento Update
en
una determinada tabla.
hasta ahí estoy bien,

el tema es que necesito que el trigger se ejecute solo si el update
modifica
un determinado campo de esa tabla.

hay alguna manera de saber que campo se está modificando ?

desde ya muchas gracias por su ayuda

saludos

Pablo









Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida