2014-01-08 57 views
-1

我創建了一個觸發器,並且我想停止觸發器執行其代碼一段時間。有沒有在這個oracle的任何功能。Oracle:停止觸發一段時間

更具體的: - 我必須在oracle應用程序中創建PO時執行操作。 我需要找到此po的申請編號,我將通過加入分配和行表來獲得申請編號。但是當觸發器被觸發時,不會有行和分配表中的任何數據。

+0

你的意思是,你想在觸發器開始執行之前放一段時間延遲? – StuartLC

+0

是的,你可以這麼說...我想把延遲的過程調用我的觸發器調用。 – Harshit

+0

我想在數據插入到一個表中時執行一些操作。爲此我創建了一個觸發器。現在當數據插入到這個表中時,在其他相關表中插入一些相關數據。我在通過觸發器調用我的過程中獲取的結果是,我得到了no_data_found。 – Harshit

回答

0
alter trigger <trigger_name> disable; 

然後使

alter trigger <trigger_name> enable; 

您不能耽誤你的觸發器,當你對錶執行的情況下,將立即啓用。

0

沒有本地數據庫的方式來延遲某些指定時間的觸發器。

一般來說,你可以啓用或禁用使用觸發器,

ALTER TRIGGER trigger_name ENABLE/DISABLE; 

您可以在存儲過程編寫代碼,然後把它執行使用一些亂的數據庫程序,例如PHP,JAVA,SHELL等(根據你的架構),支持時間驅動的執行

0

,您可以輕鬆創建工作延遲的作用。

例如,您的觸發器可能會調用DBMS_JOB.submit來創建在特定時間運行的作業(例如,當前時間之後10分鐘)。作業需要使用需要運行的過程的名稱創建。例如,您可以創建一個將記錄標識作爲參數的過程。

DBMS_JOB的好處在於它是事務性的 - 所以如果你的觸發語句回滾了,那麼這個工作也將被回滾。

缺點是作業永遠不會啓動,直到創建它的語句被提交之後。