Problema con Trigger

23/11/2006 - 00:14 por Ma. Rosario | Informe spam
Que tal a todos, estoy buscando ayuda respecto a cómo hacer funcionar el
siguiente trigger.

CREATE TRIGGER Precio_Promedio ON dbo.almacen_detalle_entrada
FOR INSERT,UPDATE
AS
Update almacen_catalogo_partes
Set precio_promedio=select (sum(inserted.importe)/sum(inserted.cantidad))
from almacen_detalle_entrada


Explico brevemento lo que quiero hacer, tengo una tabla llamada
"almacen_detalle_de_entrada" y dependiendo de los valores de esta tabla
me calcule el dato precio_promedio(es decir, la suma del campo cantidad
entre la suma del campo importe me debe de dar el dato
precio_promedio)el cual es el dato que tengo que actualizar en otra
tabla llamada almacen_catalogo_partes

A continuación muestro un ejemplo de mis tablas


"almacen_catalogo_partes"
id_parte, descripcion, existencia, precio_promedio,
1 XXX 1 7.5



"almacen_detalle_entrada"
id, id_entrada, id_parte, cantidad, precio_compra, importe
1 1 1 2 5 10
2 1 1 2 10 20


Entonces, como mencionaba anteriormente necesito que cada vez que se
agregue o actualice un dato en la tabla "almacen_detalle_entrada" me
calcule el precio promedio (ejemplo 30/2=7.5) y me actualice el campo
precio_promedio de la tabla "almacen_catalogo_partes"

Como se pudieron dar cuenta no tengo mucha experiencia manejando
triggers, es por esto que recurro a ustedes.

Espero y me puedan ayudar.

Muchas gracias.
 

Leer las respuestas

#1 Maxi
23/11/2006 - 03:06 | Informe spam
Hola, te comento algo, las tablas inserted & deleted que estan dentro de los
triggers (tambien fuera con output en sql2005) contienen solamente la
informacion del conjunto a insertar, si lo que necetas es hacer un promedio
con los datos que ya estan mas los que se estan insertando entonces una
forma podria ser haciendo primero un union entre inserted y la tabla
principal y luego hacer el sum, por ej

Update almacen_catalogo_partes
Set precio_promedio= tabla.valor
from

(select id,sum(importe)/sum(cantidad) as valor from
(select id,inserted.importe,inserted.cantidad from inserted
union all
select id,almacen_detalle_entrada.importe,almacen_detalle_entrada.cantidad
from almacen_detalle_entrada) tx
group by id) tabla

inner join almacen_catalogo_partes on
almacen_catalogo_partes.id = tabla.id


PD: no probe el codigo con lo cual puede haber algun problema de sintaxis,
la idea es que veas el concepto y como encararlo


Saludos

[Microsoft MVP SQL Server]
www.sqlgurus.org
Buenos Aires - Argentina
"Ma. Rosario" wrote in message
news:
Que tal a todos, estoy buscando ayuda respecto a cómo hacer funcionar el
siguiente trigger.

CREATE TRIGGER Precio_Promedio ON dbo.almacen_detalle_entrada
FOR INSERT,UPDATE
AS
Update almacen_catalogo_partes
Set precio_promedio=select (sum(inserted.importe)/sum(inserted.cantidad))
from almacen_detalle_entrada


Explico brevemento lo que quiero hacer, tengo una tabla llamada
"almacen_detalle_de_entrada" y dependiendo de los valores de esta tabla me
calcule el dato precio_promedio(es decir, la suma del campo cantidad entre
la suma del campo importe me debe de dar el dato precio_promedio)el cual
es el dato que tengo que actualizar en otra tabla llamada
almacen_catalogo_partes

A continuación muestro un ejemplo de mis tablas


"almacen_catalogo_partes"
id_parte, descripcion, existencia, precio_promedio,
1 XXX 1 7.5



"almacen_detalle_entrada"
id, id_entrada, id_parte, cantidad, precio_compra, importe
1 1 1 2 5 10
2 1 1 2 10 20


Entonces, como mencionaba anteriormente necesito que cada vez que se
agregue o actualice un dato en la tabla "almacen_detalle_entrada" me
calcule el precio promedio (ejemplo 30/2=7.5) y me actualice el campo
precio_promedio de la tabla "almacen_catalogo_partes"

Como se pudieron dar cuenta no tengo mucha experiencia manejando triggers,
es por esto que recurro a ustedes.

Espero y me puedan ayudar.

Muchas gracias.

Preguntas similares