Problema con actualización
Hola Señor Jordim. Tengo un gran problema con un trigger. Resulta que tengo dos tablas que se relacionan: Una tiene los presupuestos mensuales (TblCCostoPtoMes) y otra tiene los presupuestos anuales (TblCCostoPto). Quiero que cuando se agregue un presupuesto al año (por ejemplo, agrego el registro de abril de 2001 con su respectivo valor) automáticamente se sume al presupuesto total de ese año (en la otra tabla). Este es un código del trigger:
Alter Trigger TrActPtoAgno
On dbo.TblCCostoPtoMes
For Insert,update
As
declare @IntCCostoPtoId as Int, @CurCCostoPtoPdo as money, @CurCCostoPtoPdoViejo as money
Select @CurCCostoPtoPdo=CurCCostoPtoPdo
from inserted
Select @IntCCostoPtoId=IntCCostoPtoId
from inserted
Select @CurCCostoPtoPdoViejo=CurCCostoPtoPdo
from deleted
if @CurCCostoPtoPdoViejo=NULL
begin
select @CurCCostoPtoPdoViejo=0
end
If update (CurCCostoPtoPdo)
begin
update TblCCostoPto
set CurCCostoPtoPdo = CurCCostoPtoPdo - @CurCCostoPtoPdoViejo + @CurCCostoPtoPdo
where (IdsCCostoPtoId = @IntCCostoPtoId)
end
else
update TblCCostoPto
set CurCCostoPtoPdo = CurCCostoPtoPdo + @CurCCostoPtoPdo
where (IdsCCostoPtoId = @IntCCostoPtoId)
Utilizo la variable @CurCCostoPtoPdoViejo para recalcular el total cuando hago una actualización, pero si hago una inserción, esa variable hace que el cálculo se convierta en un valor NULL y no me haga la actualización en el respectivo campo (En la tabla TblCCostoPto). Si arreglo esto, entonces se me daña lo otro. ¿Qué puedo hacer para que pueda insertar y actualizar sin ningún problema? Le agradezco por su respuesta pronta. Hasta pronto
Oscar Niño
Alter Trigger TrActPtoAgno
On dbo.TblCCostoPtoMes
For Insert,update
As
declare @IntCCostoPtoId as Int, @CurCCostoPtoPdo as money, @CurCCostoPtoPdoViejo as money
Select @CurCCostoPtoPdo=CurCCostoPtoPdo
from inserted
Select @IntCCostoPtoId=IntCCostoPtoId
from inserted
Select @CurCCostoPtoPdoViejo=CurCCostoPtoPdo
from deleted
if @CurCCostoPtoPdoViejo=NULL
begin
select @CurCCostoPtoPdoViejo=0
end
If update (CurCCostoPtoPdo)
begin
update TblCCostoPto
set CurCCostoPtoPdo = CurCCostoPtoPdo - @CurCCostoPtoPdoViejo + @CurCCostoPtoPdo
where (IdsCCostoPtoId = @IntCCostoPtoId)
end
else
update TblCCostoPto
set CurCCostoPtoPdo = CurCCostoPtoPdo + @CurCCostoPtoPdo
where (IdsCCostoPtoId = @IntCCostoPtoId)
Utilizo la variable @CurCCostoPtoPdoViejo para recalcular el total cuando hago una actualización, pero si hago una inserción, esa variable hace que el cálculo se convierta en un valor NULL y no me haga la actualización en el respectivo campo (En la tabla TblCCostoPto). Si arreglo esto, entonces se me daña lo otro. ¿Qué puedo hacer para que pueda insertar y actualizar sin ningún problema? Le agradezco por su respuesta pronta. Hasta pronto
Oscar Niño
1 respuesta
Respuesta