trigger sql server 7

01/07/2003 - 17:26 por harold araujo | Informe spam
Estimado Grupo, quisiera saber que variable debo de
utilizar para obtener el registro (valor antes y valor
despues) que estoy modificando en un trigger.

Preguntas similare

Leer las respuestas

#1 Juan José Pinero Díaz
01/07/2003 - 17:53 | Informe spam
Hola Harold:

Puedes usar inserted y deleted
inserted te dará el registro después de la actualización y deleted el
registro antes de la actualización.

P.ej : (yo lo llamo espía, ya que lo uso para obtener datos cuando un
cliente manifiesta que los datos se modifican "solos").

Tenemos la tabla PRECIOS con los campos:

Articulo
Tarifa
PVP

Y queremos que cuando se cambie el campo PVP en la tabla precios nos genere
dos registros en una tabla HISTORICO_PRECIOS cuyos campos son:

Articulo
Tarifa
PVP
Usuario
Fecha
Antes

Habrá que crear la tabla HISTORICO_PRECIOS antes de crear el Trigger.

Para crear el Trigger:


CREATE TRIGGER [TR_HISTORICO_PRECIOS] ON [PRECIOS]
actualiza el registro
FOR UPDATE
AS


IF UPDATE ([PVP]) -- unicamente se generarán registros si el campo
actualizado es PVP
BEGIN

además el nombre del usuario de windows que realizó la actualización y el
nombre de la
si se trata del estado que había antes(Valor 1) o después de la
actualizacíón (2).
cabo la actualización.

INSERT INTO HISTORICO_PRECIOS
(Articulo,
Tarifa,
PVP,
Usuario,
Fecha,
Antes)
SELECT del.Articulo, del.Tarifa, del.PVP, SYSTEM_USER+ ": " +
HOST_NAME(), getdate(), 1 FROM deleted as del

actualización

INSERT INTO HISTORICO_PRECIOS
(Articulo,
Tarifa,
PVP,
Usuario,
Fecha,
Antes)
SELECT ins.Articulo, ins.Tarifa, ins.PVP, SYSTEM_USER+ ": " +
HOST_NAME(), getdate(), 0 FROM inserted as ins

END

Espero que te sirva de ayuda.


"harold araujo" escribió en el mensaje
news:318001c33fe5$1bc71b40$
Estimado Grupo, quisiera saber que variable debo de
utilizar para obtener el registro (valor antes y valor
despues) que estoy modificando en un trigger.


Respuesta Responder a este mensaje
#2 harold araujo
01/07/2003 - 19:47 | Informe spam
Ok, Gracias, voy a probar
Hola Harold:

Puedes usar inserted y deleted
inserted te dará el registro después de la actualización


y deleted el
registro antes de la actualización.

P.ej : (yo lo llamo espía, ya que lo uso para obtener


datos cuando un
cliente manifiesta que los datos se modifican "solos").

Tenemos la tabla PRECIOS con los campos:

Articulo
Tarifa
PVP

Y queremos que cuando se cambie el campo PVP en la tabla


precios nos genere
dos registros en una tabla HISTORICO_PRECIOS cuyos campos


son:

Articulo
Tarifa
PVP
Usuario
Fecha
Antes

Habrá que crear la tabla HISTORICO_PRECIOS antes de crear


el Trigger.

Para crear el Trigger:


CREATE TRIGGER [TR_HISTORICO_PRECIOS] ON [PRECIOS]


HISTORICO_PRECIOS cuando se
actualiza el registro
FOR UPDATE
AS


IF UPDATE ([PVP]) -- unicamente se generarán registros si


el campo
actualizado es PVP
BEGIN



actualización, anotará
además el nombre del usuario de windows que realizó la


actualización y el
nombre de la


servirá para saber
si se trata del estado que había antes(Valor 1) o después


de la
actualizacíón (2).


en la que se llevó a
cabo la actualización.

INSERT INTO HISTORICO_PRECIOS
(Articulo,
Tarifa,
PVP,
Usuario,
Fecha,
Antes)
SELECT del.Articulo, del.Tarifa, del.PVP,


SYSTEM_USER+ ": " +
HOST_NAME(), getdate(), 1 FROM deleted as del



registro después de la
actualización

INSERT INTO HISTORICO_PRECIOS
(Articulo,
Tarifa,
PVP,
Usuario,
Fecha,
Antes)
SELECT ins.Articulo, ins.Tarifa, ins.PVP,


SYSTEM_USER+ ": " +
HOST_NAME(), getdate(), 0 FROM inserted as ins

END

Espero que te sirva de ayuda.


"harold araujo" escribió en


el mensaje
news:318001c33fe5$1bc71b40$
Estimado Grupo, quisiera saber que variable debo de
utilizar para obtener el registro (valor antes y valor
despues) que estoy modificando en un trigger.






.

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