2017-02-03 4 views
0

Ich kann den korrekten Gesamtpreis für die Transaktionstabelle nicht ermitteln. Gesamtpreis für T001 soll 1000 sein, aber es wird zusammen mit T002 berechnet und wird 2000. Kann mir jemand meinen Auslöser ansehen? Thankyou: D Ich möchte auch fragen, wie Kardinalität für meine Tabelle zu setzen, da jede Transaktion nur maximal 3 Kaufdetails haben kann?Der korrekte Gesamtpreis kann nicht mithilfe von Triggern aktualisiert werden.

//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 

Antwort

0

Ich glaube, Sie korrelierte Unterabfragen wollen:

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

Danke soviel !! –

Verwandte Themen