Orientacion para hacer un trigger

28/09/2004 - 13:05 por Jsenso | Informe spam
Hola amigos,

necesito hacer un trigger que desencadene una succesión de actualizaciones
sobre la misma tabla.
Por ejemplo, tengo un registro por cada articulo y año. Si actualizo el
precio de un articulo en el año 1978, el trigger tiene que actualizar el
registro del articulo en 1979 con el precio del 1978 + un 0.4 de IRPF,
despues el trigger tiene que actualizar en el registro del año 1980 del
articulo con el precio del articulo en el 1979+ 0.4%
y así succesivamente hasta llegar al año actual.

¿ Esto se puede hacer con un trigger ?

Gracias y saludos, Javi.
 

Leer las respuestas

#1 Javier Loria
28/09/2004 - 14:02 | Informe spam
Hola:
Si claro se puede.Queda pendiente saber que ocurre si en la misma
operacion se modifican 2 filas del mismo articulo. Si esto no es posible
entonces en el inicio del trigger debe escribirse codigo para rechazar esto.
El cuerpo del trigger debe ser algo como:
UPDATE PrecioAnualArticulos
SET PrecioAnualArticulo.Precio=NuevoPrecio
FROM PrecioAnualArticulos
JOIN (SELECT I.Articulo
, PA.Ano
, I.Precio*EXP(1.004,I.Ano-PA.Ano) AS NuevoPrecio
FROM Inserted AS I
JOIN PrecioArticulos AS PA
ON I.Articulo=PA.Articulo
AND I.Ano<PA.Ano) AS NP
ON PrecioAnualArticulos.Precio=NP.Precio
AND PrecioAnualArticulos.Ano=NP.Ano

Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"Jsenso" wrote in message
news:
Hola amigos,

necesito hacer un trigger que desencadene una succesión de actualizaciones
sobre la misma tabla.
Por ejemplo, tengo un registro por cada articulo y año. Si actualizo el
precio de un articulo en el año 1978, el trigger tiene que actualizar el
registro del articulo en 1979 con el precio del 1978 + un 0.4 de IRPF,
despues el trigger tiene que actualizar en el registro del año 1980 del
articulo con el precio del articulo en el 1979+ 0.4%
y así succesivamente hasta llegar al año actual.

¿ Esto se puede hacer con un trigger ?

Gracias y saludos, Javi.



Preguntas similares