2011-11-22 64 views
1

嘿所以我正在学习DB2中的触发器。我错过了上课的地方,但我有一个示例问题来了解它:DB2触发解释

创建一个触发器程序,当任何项目记录为时,将触发并累计项目值(数量*成本/价格)添加,更改或删除,并在您的订单文件中产生总价值。

我的表的名称是“项目”和列[ORDERNUM,Itemnum,ItemDesc,QTYORD,日期,费用]

有人能解释你如何去这样做?我试图寻找此:http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=/com.ibm.db2.luw.sql.ref.doc/doc/r0000931.html但我是一个有点混乱....

我知道你应该做的:

CREATE TRIGGER Total_Item_Values UPDATE上的项目 FOR EACH ROW

但经过AFTER我迷路了。

+0

虽然这对于触发器来说可能是一个很好的做法,但这对于生产,事务处理系统来说可能是一个** TERRIBLE **事情。否则,你有什么(更具体地说)有麻烦?你应该能够在你有的地方放置正常的更新语句。 –

回答

1

我真的最终得到它。这是它的一部分。

CREATE TRIGGER Total_Item_Values 
    AFTER UPDATE ON ITEMS 
    REFERENCING NEW AS N 
    FOR EACH ROW 
    MODE DB2ROW 

BEGIN ATOMIC 
    UPDATE ORDER 
    SET DOLLARS = (SELECT SUM(COST*QTYORD) 
    FROM ITEMS I WHERE N.ORDERNUM = I.ORDERNUM 
    GROUP BY I.ORDERNUM) 
WHERE N.ORDERNUM = O.ORDERNUM; 
    END;