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

Preguntas similare

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







Respuesta Responder a este mensaje
#2 Nelson Rodriguez
18/03/2005 - 14:32 | Informe spam
Gracias Carlos.
Te hago otra pregunta, se puede lanzar un procedimiento almacenado dentro de
un Trigger?

Gracias y Saludos

"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:
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











Respuesta Responder a este mensaje
#3 Carlos Sacristán
18/03/2005 - 14:47 | Informe spam
Sí, por poder se puede, pero es lo que te comentaba antes, si puedes
hacerlo todo a través de procedimientos almacenados y evitar así los
trigger, te quitarás algunos quebraderos de cabeza


Un saludo

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

"Nelson Rodriguez" escribió en el mensaje
news:us6Ig#
Gracias Carlos.
Te hago otra pregunta, se puede lanzar un procedimiento almacenado dentro


de
un Trigger?

Gracias y Saludos

"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:
> 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
>>
>>
>>
>>
>>
>>
>>
>
>


Respuesta Responder a este mensaje
#4 Nelson Rodriguez
18/03/2005 - 15:09 | Informe spam
Muchas gracias Carlos.

Saludos

"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:%
Sí, por poder se puede, pero es lo que te comentaba antes, si puedes
hacerlo todo a través de procedimientos almacenados y evitar así los
trigger, te quitarás algunos quebraderos de cabeza


Un saludo

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

"Nelson Rodriguez" escribió en el mensaje
news:us6Ig#
Gracias Carlos.
Te hago otra pregunta, se puede lanzar un procedimiento almacenado dentro


de
un Trigger?

Gracias y Saludos

"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:
> 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
>>
>>
>>
>>
>>
>>
>>
>
>






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