活字格用利用数据库触发器更新库存实例 最近活字格群里经常有同学问,库存用活字格怎么算:官方给出的案例是在前台表单上之际算出来后更新数据库,比较复杂。要能解决实际问题就是好办法。 除此之位还有其他的方法,比如视图,触发器,视图官方有视频讲解,这里就不多做讲述了。 用视图聚合由于有人担心每次都有计算所有数据,怕数据量大了服务器吃不消,采用触发器没有这种顾虑,所以做个触发器的案例 由于内置sqllite 不知道设计器用的sqlite 文件在哪里,就用的是sqlserver的外联数据库方便写触发器 好了开始 步骤1 建表: 1 物料表 字段 物料名称 库存数量 2 出库表 字段 id ,物料名臣,出库数量 只做演示之用,做的比较简单,入库等其他业务可以以此类推 如图
顺便把列表页面做了是不是soeasy 步骤2 写触发器 触发器分三种 ,触发方式分两种,这个百度上有资料大家可以自己百度 如图
我们在 出库表上做三个触发器,如上图
分别是 插入,修改,删除 ,sql代码分别为 插入记录触发器代码: DECLARE@name nvarchar(100),@num decimal (25,3) select@name = 物料名称,@num = 出库数量 from inserted if @namenot in (SELECT a.物料名称 from 物料表 a ) INSERTinto 物料表 (物料名称,库存数量) VALUES ( @name,-@num) else update 物料表 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,每次增加出库库存都会自己更新,是不是很简单
附上 工程文件请笑纳,望群里高手勿喷,经验与大家分享
|