2009-08-12
优雅的代码
此代码为一个触发器,应用环境如下:
/*库存数量表*/ CREATE TABLE tb_GoodsInv ( InvID int identity, GoodsID int NOT NULL, DeptID smallint NOT NULL, Qty int NOT NULL, constraint PK_TB_GOODSINV PRIMARY KEY (InvID) ) go /*订单明细表*/ CREATE TABLE tb_ROLine ( ROLineID int identity, ROID int NOT NULL, GoodsID int NOT NULL, OrigQty int NOT NULL, RealQty int NOT NULL, constraint PK_TB_ROLINE PRIMARY KEY (ROLineID) ) go
要求订单明细表每增加一条记录,即同步向库存数量中相同的商品累加数量,若无记录则创建记录。
以下是这个让我看了三遍才明白的代码:
CREATE TRIGGER tri_ro ON tb_ROLine FOR INSERT AS UPDATE tb_GoodsInv SET qty=tb_GoodsInv.Qty+t.realQty FROM ( SELECT goodsid ,sum(realQty) AS realqty FROM inserted GROUP BY goodsid ) AS t WHERE tb_GoodsInv.goodsid=t.goodsid INSERT tb_GoodsInv(goodsid,Qty) SELECT goodsid ,sum(realQty) AS realqty FROM inserted i WHERE NOT EXISTS ( SELECT 1 FROM tb_GoodsInv WHERE goodsid=i.goodsid ) GROUP BY goodsid go
转载注明:转自Yuzifu Studio
本站遵循:署名-非商业性使用-禁止演绎 3.0 共享协议
收藏分享:
QQ书签 /
百度收藏 /
Google书签 /
收藏到鲜果 /
Digg /
Del.icio.us
