我正在創建一個圖書館系統。我如何在觸發器中動態創建工作計劃?
當一本書被保留時,如果保留的用戶沒有借用它,我希望它在3天內自動將狀態更改回「可用」。
我可以創建一個觸發器,當狀態改變爲火,以「保留」,但我失去了對創建工作在3天內發生和將狀態改回爲「可用」
任何意見,建議和指導將不勝感激:)
我正在創建一個圖書館系統。我如何在觸發器中動態創建工作計劃?
當一本書被保留時,如果保留的用戶沒有借用它,我希望它在3天內自動將狀態更改回「可用」。
我可以創建一個觸發器,當狀態改變爲火,以「保留」,但我失去了對創建工作在3天內發生和將狀態改回爲「可用」
任何意見,建議和指導將不勝感激:)
您應該首先創建一個過程來根據需要更新列,並將其作爲輸入參數作爲書籍ID(或其他任何PK)。
在您的觸發器中,調用dbms_scheduler包的提交過程,並在3天內定義開始日期,無需冗餘,並使用:new.bookid作爲輸入參數運行先前定義的過程。
一旦稍後提交交易,交易將被提交。否則,在事務回滾的情況下,作業也會被回滾。
Nicolas。
事實上,DBMS_SCEDULER會執行隱式提交(與舊的DBMS_JOB不同)。 http://www.pythian.com/news/398/dbms_scheduler-and-implicit-commits/ – 2010-06-27 23:13:40
有趣的是,在那種情況下,最好在DBMS_JOB中工作。 – 2010-06-28 06:51:54
你在什麼語言編碼?
通常對於像這樣的東西,我寫一個定期運行的cron作業(每天圖書館前一天一次?),查詢查看所有已保留超過3天的所有內容,並將其設置回可用狀態。
我使用C#作爲GUI。但我想通過數據庫完全處理這個問題。 :) – 2010-06-27 18:15:55
下面有幾個答案實現你的想法,改變存儲的STATUS值。另一種方法是讓應用程序存儲reserved_on_date並計算可用性,即可用性:=(sysdate - reserved_on_date)> 3.這消除了對異步作業不起作用的擔心,並且還讓應用程序顯示剩餘多少時間預約窗口 – dpbradley 2010-06-27 20:15:29
+1給dpbradley的回答。或者,您可以添加一個日期列「available_on」,而不是設置爲「可用」狀態,直到該書可用時爲止。這樣沒有數據需要更新。 – 2010-06-28 04:48:03