Problema con Actualizacion de Registros y Trigger

04/07/2007 - 21:50 por Eris Gomez | Informe spam
Saludos grupo.
Tengo un pequeño inconveniente. Tengo un trigger en una tabla que quiero que
se dispare cada vez que me cambien un valor de 1 a 0. Si el valor anterior
era 1 y ahora es 0, se selecciona de otra tabla las referencias con esta
fila actualizada. El problema es que quiero guardar el valor anterior y el
actual, pero no he podido hacerlo. Aqui les pongo el codigo del Trigger.
**********************************************************************
CREATE TRIGGER dbo.Exp_movimDirecto
ON dbo.exptipmo
AFTER UPDATE
AS

DECLARE @@tipmov_tmo varchar(16),
@@direct_tmo tinyint,@@cambio_direc tinyint,
@@enter varchar(2),
@@tipmov_car varchar(2),
@@codcia_tmo varchar(2)

set @@tipmov_tmo ='' set @@tipmov_car = '' set @@codcia_tmo = ''
set @@direct_tmo = 0
set @@enter = char(13)

SELECT @@codcia_tmo = exptipmo.codcia_tmo, @@tipmov_tmo =
exptipmo.tipmov_tmo,
@@direct_tmo = exptipmo.direct_tmo,@@cambio_direc =
inserted.direct_tmo
FROM exptipmo, inserted
where exptipmo.codcia_tmo = inserted.codcia_tmo
and exptipmo.tipmov_tmo = inserted.tipmov_tmo


RAISERROR ('%sAnterior %d Actual %d ', 16,
1,@@enter,@@cambio_direc,@@direct_tmo )
**********************************************************************
Espero su colaboracion. Gracias
Ing. Eris J. Gómez
Santiago, República Dominicana.
 

Leer las respuestas

#1 Ricardo Passians
04/07/2007 - 23:30 | Informe spam
Hola compatriota :)

Dentro de un trigger after, la tabla Deleted contiene el conjunto antes de
la actualización (update).
Igual la tabla Inserted lo contiene posterior a la actualización.
De ellas podrías sacar lo que quieres.
También te podría interesar chequear la cláusula "IF UPDATE(columna)".
O quizás para otro esquema de control puedes evaluar el uso de un trigger
INSTEAD OF.

Saludos

Ricardo Passians


"Eris Gomez" escribió en el mensaje
news:
Saludos grupo.
Tengo un pequeño inconveniente. Tengo un trigger en una tabla que quiero
que se dispare cada vez que me cambien un valor de 1 a 0. Si el valor
anterior era 1 y ahora es 0, se selecciona de otra tabla las referencias
con esta fila actualizada. El problema es que quiero guardar el valor
anterior y el actual, pero no he podido hacerlo. Aqui les pongo el codigo
del Trigger.
**********************************************************************
CREATE TRIGGER dbo.Exp_movimDirecto
ON dbo.exptipmo
AFTER UPDATE
AS

DECLARE @@tipmov_tmo varchar(16),
@@direct_tmo tinyint,@@cambio_direc tinyint,
@@enter varchar(2),
@@tipmov_car varchar(2),
@@codcia_tmo varchar(2)

set @@tipmov_tmo ='' set @@tipmov_car = '' set @@codcia_tmo = ''
set @@direct_tmo = 0
set @@enter = char(13)

SELECT @@codcia_tmo = exptipmo.codcia_tmo, @@tipmov_tmo =
exptipmo.tipmov_tmo,
@@direct_tmo = exptipmo.direct_tmo,@@cambio_direc =
inserted.direct_tmo
FROM exptipmo, inserted
where exptipmo.codcia_tmo = inserted.codcia_tmo
and exptipmo.tipmov_tmo = inserted.tipmov_tmo


RAISERROR ('%sAnterior %d Actual %d ', 16,
1,@@enter,@@cambio_direc,@@direct_tmo )
**********************************************************************
Espero su colaboracion. Gracias
Ing. Eris J. Gómez
Santiago, República Dominicana.



Preguntas similares