VVANVI 发表于 2019-5-20 22:19:57

触发器实现库存更新附工程文件

活字格用利用数据库触发器更新库存实例 最近活字格群里经常有同学问,库存用活字格怎么算:官方给出的案例是在前台表单上之际算出来后更新数据库,比较复杂。要能解决实际问题就是好办法。除此之位还有其他的方法,比如视图,触发器,视图官方有视频讲解,这里就不多做讲述了。用视图聚合由于有人担心每次都有计算所有数据,怕数据量大了服务器吃不消,采用触发器没有这种顾虑,所以做个触发器的案例由于内置sqllite 不知道设计器用的sqlite 文件在哪里,就用的是sqlserver的外联数据库方便写触发器 好了开始步骤1   建表:1物料表   字段物料名称库存数量2出库表   字段 id ,物料名臣,出库数量只做演示之用,做的比较简单,入库等其他业务可以以此类推如图

                               顺便把列表页面做了是不是soeasy 步骤2 写触发器 触发器分三种 ,触发方式分两种,这个百度上有资料大家可以自己百度如图
我们在 出库表上做三个触发器,如上图

分别是 插入,修改,删除,sql代码分别为插入记录触发器代码:DECLARE@name nvarchar(100),@num decimal (25,3)select@name = 物料名称,@num = 出库数量from insertedif @namenot in (SELECT a.物料名称 from 物料表 a )INSERTinto 物料表 (物料名称,库存数量) VALUES ( @name,-@num)elseupdate 物料表 set 物料表.库存数量 =物料表.库存数量 - isnull(inserted.出库数量,0) from 物料表innerjoin inserted on 物料表.物料名称 = inserted.物料名称 where 物料表.物料名称 = inserted.物料名称 删除记录触发器代码update 物料表 set 物料表.库存数量 = 物料表.库存数量+deleted.出库数量 from 物料表 innerjoin deleted on 物料表.物料名称=deleted.物料名称where 物料表.物料名称=deleted.物料名称更新记录触发器代码update 物料表 set [物料表].库存数量 = [物料表].库存数量 +deleted.出库数量-inserted.出库数量 from 物料表innerjoin inserted on 物料表.物料名称 = inserted.物料名称innerjoin deleted on 物料表.物料名称 = deleted.物料名称where 物料表.物料名称=inserted.物料名称 and 物料表.物料名称 = deleted.物料名称 已经OK,每次增加出库库存都会自己更新,是不是很简单



附上 工程文件请笑纳,望群里高手勿喷,经验与大家分享

Simon.hu 发表于 2019-5-21 10:22:21

谢谢分享!

yxq 发表于 2020-2-23 13:13:13

请教楼主一个问题,在修改时如果改变物料名称该咋办?目前的工程文档在改变物料名称时库存没有更新!谢谢!

宋小猫 发表于 2020-2-25 18:02:09

又是代码 我狠代码:Q

Simon.hu 发表于 2020-2-27 17:38:17

没事,等我6.0服务端命令解决一些问题

so easy~

yikai 发表于 2020-3-15 20:46:07

mark

Eric.Liang 发表于 2020-3-16 18:13:18

谢谢各位老板的关注~
页: [1]
查看完整版本: 触发器实现库存更新附工程文件