Ayuda con un Trigger

18/03/2005 - 12:14 por Nelson Rodriguez | Informe spam
Hola amigos, tengo el siguiente Trigger que actualiza un campo de SALDO de
mercaderia cada vez que se ingresa una Factura cuyo archivo de Líneas de
facturas es FACLINE.
Debería mover el SALDO siempre que el campo MUEVE_STOCK esta en "S".
Funciona siempre PERFECTO cuando el campo MUEVE_STOCK está en "S", pero
cuando se ingresa con "N" me indica este error:

Servidor: mensaje 515, nivel 16, estado 2, procedimiento AjStk_Facturas,
línea 5
No se puede insertar el valor NULL en la columna 'SALDO', tabla
'AJP.dbo.REMEDIOS'. La columna no admite valores NULL. UPDATE falla.
Se terminó la instrucción.

EL TRIGGER ES:
CREATE TRIGGER AjStk_Facturas ON FACLINE
FOR INSERT, UPDATE, DELETE
AS
update remedios
set saldo=saldo+(select sum(coalesce(cantidad,0)) from inserted
where a.producto=inserted.producto and mueve_stock='S'),
from inserted i,remedios a
where a.producto=i.producto

update remedios
set saldo=saldo-(select sum(coalesce(cantidad,0)) from deleted
where a.producto=deleted.producto and mueve_stock='S'),
from deleted d,remedios a
where a.producto=d.producto



Quisiera que alguien me corrigiera o sugiriera algo con respecto al Trigger.

Saludos

Nelson Rodriguez
Salto - Uruguay
neroig@adinet.com.uy
 

Leer las respuestas

#1 Carlos Sacristán
18/03/2005 - 12:50 | Informe spam
Prueba con:

UPDATE remedios SET saldo = saldo + i.suma
FROM remedios r INNER JOIN (SELECT SUM(COALESCE(cantidad, 0)) suma,
producto FROM inserted GROUP BY producto WHERE mueve_stock='S')
i ON r.producto=i.producto

Aunque no te recomiendo hacer este tipo de operaciones a través de un
trigger, sino que las actualizaciones que se realicen a las tablas las hagas
a través de procedimientos alcenados, en los que podrás incluir las
operaciones que sean necesarias



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Nelson Rodriguez" escribió en el mensaje
news:
Hola amigos, tengo el siguiente Trigger que actualiza un campo de SALDO de
mercaderia cada vez que se ingresa una Factura cuyo archivo de Líneas de
facturas es FACLINE.
Debería mover el SALDO siempre que el campo MUEVE_STOCK esta en "S".
Funciona siempre PERFECTO cuando el campo MUEVE_STOCK está en "S", pero
cuando se ingresa con "N" me indica este error:

Servidor: mensaje 515, nivel 16, estado 2, procedimiento AjStk_Facturas,
línea 5
No se puede insertar el valor NULL en la columna 'SALDO', tabla
'AJP.dbo.REMEDIOS'. La columna no admite valores NULL. UPDATE falla.
Se terminó la instrucción.

EL TRIGGER ES:
> CREATE TRIGGER AjStk_Facturas ON FACLINE
FOR INSERT, UPDATE, DELETE
AS
update remedios
set saldo=saldo+(select sum(coalesce(cantidad,0)) from inserted
where a.producto=inserted.producto and


mueve_stock='S'),
from inserted i,remedios a
where a.producto=i.producto

update remedios
set saldo=saldo-(select sum(coalesce(cantidad,0)) from deleted
where a.producto=deleted.producto and mueve_stock='S'),
from deleted d,remedios a
where a.producto=d.producto

>

Quisiera que alguien me corrigiera o sugiriera algo con respecto al


Trigger.

Saludos

Nelson Rodriguez
Salto - Uruguay







Preguntas similares