sql 触发器 库存

表1、入库表      
  列:入库单号   零件号    入库数量  
表2、出库表      
  列:出库单号   零件号    出库数量   
表3:零件信息表
  列:零件号`````` 库存数量  
我想实现每一次的入库时,"零件信息表"里的"库存数量"要加上"入库数量",出库时,”库存数量“要减去”出库数量“,就是实现更新库存应该怎么做?写触发器吗,触发器该怎么写?还是有什么更好的方法,请高手帮助我,最好有详细代码,谢谢!



最佳答案
一般来说库存操作单据和库存结余的联系都是通过客户端软件实现的,就是在入库单的审核操作按钮处加入SQL代码,如果你的不是这样,也可以通过触发器来实现,但是完善的流程应该包括在插入、修改和删除时都保证对零件信息表的更改。

1、CREATE TRIGGER Tr_入库表 ON 入库表
after insert,update,delete
AS
begin
  update a set a.库存数量=a.库存数量 +b.入库数量
  from  零件信息表 a,(select 零件号,sum(入库数量) 入库数量 from inserted group by 零件号 ) b  --如果每次插入时零件号不重复,则不必聚合
  where a.零件号 =b.零件号;
  go
  update a set a.库存数量=a.库存数量 -b.入库数量
  from  零件信息表 a,(select 零件号,sum(入库数量) 入库数量 from deleted group by 零件号 ) b  --如果每次插入时零件号不重复,则不必聚合
  where a.零件号 =b.零件号;
  go
end

2、CREATE TRIGGER Tr_出库表 ON 出库表
after insert,update,delete
AS
begin
  update a set a.库存数量=a.库存数量 -b.出库数量
  from  零件信息表 a,(select 零件号,sum(出库数量) 出库数量 from inserted group by 零件号 ) b  --如果每次插入时零件号不重复,则不必聚合
  where a.零件号 =b.零件号;
  go
  update a set a.库存数量=a.库存数量 +b.出库数量
  from  零件信息表 a,(select 零件号,sum(出库数量) 出库数量 from deleted group by 零件号 ) b  --如果每次插入时零件号不重复,则不必聚合
  where a.零件号 =b.零件号;
  go
end
6
| 评论

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值