日期:2014-05-19  浏览次数:20465 次

触发器的更新问题
我想在入库时更新库存,入库的数量在更改后,可以对STOCK进行相应的更改,就如何写触发器.

分不够再开贴加分.

------解决方案--------------------
目前我们的进销存系统的设计思路:
入库单两个表:主表和从表,从表记录商品的明细,包括数量、进价等,主表有一字段:status,作为生效标志用。

当保存到数据库时,执行的是insert语句,这时,入库单的触发器并不会增加库存,只有当用户点“生效”按钮时,给数据库一个 "update 入库单主表 set status = 1 where ... "的命令,这时触发器触发库存表。

库存表最后也分至少两个表,库存批次表,和库存主表,我们系统里有三个表,还有一个批次记录表,当然入库生效时,直接插入库存明细表,因为库存明细表,是以批次为主键。然后再库存明细表里再写一触发器,根据插入的库存记录修改主表。这种设计思路也方便以后各种业务单据的增减库存业务。
------解决方案--------------------
create trigger a on 入库表 after insert as
begin
update 库存表 set 货物数=货物数+b.数量 from inserted where 库存表.货物id=inserted.货物id
insert 库存表(字段列表) select 对应字段列表 from inserted where 货物id not in(select 货物id from 库存表)
end
先将有货物名称记录的数量加上新插入的数量,再将不存在货物名称的直接插入进来
------解决方案--------------------
楼主这种处理方式有问题,入库单据有添加时可以自动追加库存或更新库存,但如果这张单据还可以修改,再据此修改库存就比较麻烦了。

所以通用的处理方式,就像一楼所述,给单据加一个审核标志,只有审核后才真正的影响库存。