USE ASRS_WXZD_JYMH_CPK go SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER TABLE kwjbxx ALTER COLUMN 双伸位都有货 TINYINT NULL go ALTER TRIGGER [dbo].[t_kwjbxx_U] ON [dbo].[kwjbxx] FOR UPDATE AS /** * 在总数量从其它值变为0时,清空托盘号、库存峰值、实际物资类型、备料单号、实放物资种类 * 如果修改后的总数量大于修改前的总数量,则更新库存峰值为修改后的总数量 * Created by 蒋智湘 ON 05-07-08 * Modified by 蒋智湘 ON 05-08-23 如果修改总数量前得库存数量可能为NULL,此时也需要修改库存峰值 * Modified by jzx on 2009-8-22 库存总数量清零时,新增字段kzjrks(可追加入库数)清空。 * Modified by jzx on 2014-12-9 增加对新字段“双伸位都有货”赋值;关闭对kcfz字段的赋值 * Modified by jzx on 2015-6-24 当库位库存总数更改为0时,不再清空托盘号字段值。是为了处理整盘出库指令审核后,取消审核时托盘号无法复原问题 * Modified by jzx on 2015-11-24 当更改“托盘个数”字段值时,如果当前库位存放物资是空托盘,则直接修改zsl字段值; 当空库位设定托盘个数大于0后,sfwzzl字段值自动更新为'T' * Modified by jzx on 2016-8-27 jzx 当修改托盘个数字段值从0到1时,不再更改sfwzzl字段值 * Modified by jzx on 2017-11-27 优化对kwjbxx表的“双伸位都有货”字段的赋值方法。由原来的4条语句更改为1条语句 */ IF UPDATE(zsl) BEGIN SET NOCOUNT ON; IF EXISTS(SELECT 2 FROM inserted WHERE zsl = 0) UPDATE kwjbxx SET kcfz = NULL, sjwzlx = NULL, sfwzzl = NULL, kzjrks = NULL FROM inserted I WHERE I.kwbh = kwjbxx.kwbh AND I.zsl = 0; IF EXISTS(SELECT 2 FROM inserted WHERE xnkw = 0 AND (nckw IS NOT NULL OR wckw IS NOT NULL)) BEGIN UPDATE kwjbxx SET 双伸位都有货= CASE WHEN (r.zsl > 0 AND wc.浅货位库存数>0) OR (r.zsl > 0 AND nc.深货位库存数>0) THEN 3 -- 深货位有货,则更新为1 WHEN nc.深货位库存数> 0 THEN 1 -- 浅货位有货,则更新为2 WHEN wc.浅货位库存数> 0 THEN 2 ELSE 0 END FROM kwjbxx r LEFT JOIN (SELECT zsl 浅货位库存数, kwbh FROM kwjbxx) wc ON r.wckw=wc.kwbh LEFT JOIN (SELECT zsl 深货位库存数, kwbh FROM kwjbxx) nc ON r.nckw=nc.kwbh , inserted i WHERE (i.nckw IS NOT NULL OR i.wckw IS NOT NULL) AND (r.kwbh IN(i.nckw,i.wckw,i.kwbh)) END; END go UPDATE kwjbxx SET 双伸位都有货=r.x FROM ( select r.kwbh,r.zsl,r.wckw,浅货位库存数,r.nckw,深货位库存数 , CASE WHEN (r.zsl > 0 AND wc.浅货位库存数>0) OR (r.zsl > 0 AND nc.深货位库存数>0) THEN 3 WHEN nc.深货位库存数> 0 THEN 1 WHEN wc.浅货位库存数> 0 THEN 2 ELSE 0 END x from kwjbxx r LEFT JOIN (SELECT zsl 浅货位库存数, kwbh FROM kwjbxx) wc ON r.wckw=wc.kwbh LEFT JOIN (SELECT zsl 深货位库存数, kwbh FROM kwjbxx) nc ON r.nckw=nc.kwbh WHERE (nckw IS NOT NULL OR wckw IS NOT NULL) ) r WHERE kwjbxx.kwbh=r.kwbh go -- kws字段从java代码移入数据库;双伸库位都没有托盘的优先安排,深货位有的浅货位没有的,则次优安排 update sys_SQL_statements set SQL_string='kws,双伸位都有货,storeDist' where ID='orderClauseForDistance'; go