2011-04-05 114 views
2

我剛剛編寫了一個存儲過程和存儲函數,用於將新行插入到Orders表中。行更新插入:Ordernum,OrderDate,Customer,Rep,Manufacturer,Product,Qty和SaleAmount。Oracle PL/SQL問題中的觸發器

我現在必須編寫一個觸發器,通過添加剛剛添加的訂單數量來更新我的Salesreps表。我不確定如何引用行。我曾經嘗試這樣做:

​​

銷售是對銷售代表表中的列名。金額,如果在存儲過程中使用的名稱。我收到'Where Rep = Salesrep'返回的錯誤。如果我不包含這一行,觸發器不會返回任何錯誤。不過,我假設如果我無法弄清楚如何將銷售額與銷售額相關聯的salesrep,我會更新每一個salesrep(我相信他們會很滿意)。任何幫助將不勝感激,一如既往。

+1

什麼是'Salesrep'在'WHERE衆議員=銷售代表;'條款? – zerkms 2011-04-05 01:53:47

+0

對不起,我試着儘可能簡潔地解釋一切,但錯過了一些東西。 Salesrep是Salesreps表中的行的名稱(由Orders表中的Rep列引用,這是存儲過程插入行的內容)。 – unit 2011-04-05 02:00:58

+0

你爲什麼不在'Rep'前面加上'NEW:'呢? (請參閱答案) – zerkms 2011-04-05 02:04:52

回答

4
CREATE OR REPLACE TRIGGER UpdateSalesrep 
    AFTER INSERT ON Orders 
    FOR EACH ROW 
    BEGIN 
     UPDATE Salesreps 
     SET Sales = Sales + :NEW.Amount 
     WHERE Salesrep = :NEW.Rep; 
End; 
/
+0

謝謝,我會試試。這是我第一次寫一個觸發器,並且提供的noteset留下了一些需要的東西。對語法不確定。謝謝。 – unit 2011-04-05 02:06:32