Crear trigger que haga cargos y descargos en depósitos de almacen al realizar traslados
Cordiales como notaron en la pregunta, quisiera un trigger que al hacer una inserción en la tabala de inventarios reste la existencia en la tabla existencia de los id de productos y el deposito de origen y al mismo tiempo sume la existencia de los id de productos y el deposito de destino, sino existe el deposito de destino que haga el insert, lo diseñe y solo me hace el trabajo con un solo insert perfectamente, pero cuando hago un insert masivo no funciona, aquí dejo el código para que se evalúe a ver que puedo estar haciendo mal:
ALTER trigger [dbo].[Traslado] on [dbo].[Detalle_Opei]
after insert
as
set nocount on
Begin
--Descontar existencia del deposito de Origen
update E set E.Existen=E.Existen-i.Cantidad
from inserted i inner join Existencia E
on i.Id_Prod=e.Prod_Id where i.Id_Prod=e.Prod_Id
and i.UbicOrigen=e.Deposito;
end;
--Si existe el código y el deposito en la tabla de existencia aumenta la existencia
--del deposito de destino
If exists(select e.Prod_Id,e.Deposito from Existencia e
inner join inserted i on e.Prod_Id=i.Id_Prod
where i.Id_Prod=e.Prod_Id and i.UbicDestino=e.Deposito)
Begin
Update E set E.Existen=E.existen+i.Cantidad
From
inserted i inner join Existencia E
on e.Prod_Id=i.Id_Prod
where i.Id_Prod=e.Prod_Id and i.UbicDestino=e.Deposito
End;
else
--Si no existe el codigo y el deposito en la tabla de existencia hace un insert
Begin
insert into Existencia(Prod_Id,Deposito,Existen)
Select i.Id_Prod,i.UbicDestino,i.Cantidad from inserted i
End;