关于UPDATE触发器的问题

feifei10 2002-04-17 04:45:18
请问各位大虾,我想设计一个触发器,使他能在一条记录被更新时,在另一个表中加上其变化量(如有一个订单表,其中有一个数量字段,在另一个库存字段中有一个订单总数量,我想在订单表的数量字段改变时,使库存字段中的订单总数字段也改变,订单总数=订单总数+(订单原数量-订单现在的数量))。谢谢
...全文
21 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
feifei10 2002-04-18
  • 打赏
  • 举报
回复
谢谢
Yang_ 2002-04-17
  • 打赏
  • 举报
回复
哎,老有没有试过就说有问题的!
N_chow 2002-04-17
  • 打赏
  • 举报
回复
把FOR insert 跟for delete 的情況拿掉就好了,另外第一句判斷在庫存中是否有訂單中的對應記錄也可拿掉
N_chow 2002-04-17
  • 打赏
  • 举报
回复
哎~~~我好不容易把方方面面都考慮到了...哪知才是多此一ju丫:(

feifei10 2002-04-17
  • 打赏
  • 举报
回复
楼上的意思是不是当订单条记录被删除或增加时,修改库存表。
我的意思是指当订单记录被改变时,修改库存表。(如我订的6斤苹果去掉2斤,库存表中的总订单=总订单-2)
N_chow 2002-04-17
  • 打赏
  • 举报
回复
Try this...
/* ID為你的表里的Key字段.OAmt為訂單表里的訂單數量,OrderAmt為庫存里的訂單數量*/

Create Trigger trgTest ON TableName
FOR INSERT,UPDATE,DELETE
AS

IF NOT EXISTS(SELECT * From StockTable,inserted WHERE StockTable.ID=inserted.ID)
INSERT INTO StockTable SELECT ID,0 from inserted

UPDATE StockTable
SET OrderAmt=OrderAmt+(ISNULL(inserted.OAmt,0)-ISNULL(deleted.OAmt,0))
From StockTable INNER JOIN ( inserted FULL OUTER JOIN deleted ON inserted.ID=deleted.ID)
ON StockTable.ID=ISNULL(inserted.ID,deleted.ID)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧