2017-02-03 9 views
0

Я не могу получить правильную общую цену за транзакционную таблицу. Общая стоимость T001 должна быть 1000, но она рассчитывается вместе с T002 и становится 2000. Может ли кто-нибудь взглянуть на мой спусковой крючок? Thankyou: D Я также хотел бы спросить, как установить мощность для моей таблицы, так как каждая транзакция может содержать не более 3 деталей покупки?Невозможно обновить правильную цену с помощью триггеров

//My trigger 
create trigger calc_totprice 
after insert or delete on purchase_detail 
for each row mode db2sql 

begin 

    if inserting then 
    update transaction 
    set tot_price = (select sum(purchase_price) 
    from purchase_detail, transaction 
    where purchase_detail.trans_id = transaction.trans_id); 

    elseif deleting then 
    update transaction 
    set tot_price = (select sum(purchase_price) 
    from purchase_detail, transaction 
    where purchase_detail.trans_id = transaction.trans_id); 
end if; 
end 

//transaction table 
TRANS_ID CON_ID CUS_ID TRANS_DATE TRANS_STATUS TOT_PRICE 
-------- ------ ------ ---------- ------------ --------- 
T001  CN01 CU001 2017-01-01 SUCCESS  2000.00 
T002  CN01 CU001 2017-01-01 SUCCESS  2000.00 

//purchase_detail table 
PURCHASE_ID SEAT_ID TRANS_ID PURCHASE_PRICE 
----------- ------- -------- -------------- 
P001  1  T001    500.00 
P002  2  T001    500.00 
P003  1  T001    500.00 
P004  2  T002    500.00 

ответ

0

Я думаю, что вы хотите коррелированных подзапросов:

if inserting then 
    update transaction 
     set tot_price = (select sum(purchase_price) 
         from purchase_detail 
         where purchase_detail.trans_id = transaction.trans_id 
         ); 

elseif deleting then 
    update transaction 
     set tot_price = (select sum(purchase_price) 
         from purchase_detail 
         where purchase_detail.trans_id = transaction.trans_id 
         ); 
+0

Спасибо так много !! –