2011-03-23 154 views
1

我無法獲得輸出也找不到問題。觸發器調用存儲過程

問:

Table : rent_info(cust_id,date_out,date_due_in,date_returned,fine) 

此表是一本書租賃之一。插入時首先必須給出cust_id,date_out(發佈圖書的日期),date_due_in(發佈日期後7天)。返回書籍時,將使用觸發器將數據插入到rent_info表中。

我必須給date_returned。在觸發器中,我必須計算每天過去10美元的罰款。

對於返回,我寫了一個過程,更新表並插入返回日期。然後創建一個觸發器(一個行級觸發器,檢查更新要支付多少罰款)。作爲最後聲明,計算的罰款是已更新到表中。

問題是我可以生成罰款金額,但更新罰款更新聲明給了我一個「表變異錯誤」。

你能告訴我我哪裏出錯了。對不起,沒有發佈代碼。我無法從實驗室獲得代碼。如果這些信息還不夠,我可以在我的系統中試用它,並在稍後發佈。

+0

請參閱[這個答案](http://stackoverflow.com/questions/5133705/solving-the-mutating-table-problem-in-oracle-sql-produces-a-deadlock/5137951#5137951)它解釋瞭如何可以解決變異表錯誤 – Sathya 2011-03-23 14:52:38

回答

2

沒有代碼,猜測你如何試圖解決這個問題有點棘手,但聽起來你已經寫了一個UPDATE語句來更新行級觸發器中的當前行。

這是不可能的。您無法更新正在更新的行。

您可以通過更改觸發器內的「:new.fine」的值來更新計算的罰款。

+0

是的 - 並確保觸發器是帶有FOR EACH ROW選項的BEFORE UPDATE觸發器。 – 2011-04-01 06:35:06

相關問題