2010-10-13 78 views
0

問題如下:行插入後我有一個oracle觸發器。從觸發器,我想調用一個PHP腳本,並只傳入插入的行字段作爲參數。從oracle觸發調用php腳本

插入來自非常舊的遺留應用程序,很少有機會查看源代碼。行被頻繁插入,一次可以批量排列1000行,或者30分鐘可以排成一排,因此每隔一段時間檢查一下這個表,比方說5秒不是一個選項。

所以,想法是有甲骨文觸發器,這將觸發每次插入和調用我的PHP腳本?有任何想法嗎?

在此先感謝...

+2

http://www.asktheoracle.net/how-to-run-an-executable-from-an-oracle-trigger.html – 2010-10-13 21:50:04

+0

謝謝你會嘗試。希望這也可以用於c#的單聲道實現。 – msqsf 2010-10-13 21:53:25

回答

1

當你說「的PHP腳本」你從字面上的意思是一個命令行腳本,或php的一大塊正通過運行Apache /等。

如果它的前者,那麼去與OMG小馬。否則,我會使用UTL_HTTP來調用Apache/PHP。其實,我可能會考慮與此無論如何(如果需要更新您的PHP/C#)。

只要記住雖然..觸發器是事務性的......如果你絕對必須從觸發器中調出,請注意你的觸發器可能會運行多次(由於query restart),並可能完全回滾,導致你的外部(大概是非 - 事務)PHP調用現在無效。如果你的php無法處理這個問題,那麼可能讓你的觸發器創建一個工作,甚至是一個消息到一個AQ或什麼東西,這也會加快處理,你可能不希望你的插入等待一個外部的Web電話。

0
I want to call a php script when some row is inserted or updated in some table via oracle triggers . Currently I m using this but its not much of help. 

CREATE OR REPLACE TRIGGER test_script 
BEFORE INSERT OR UPDATE OR DELETE ON STATES 
FOR EACH ROW 
BEGIN 
    -- Flags are booleans and can be used in any branching construct. 
    CASE 
    WHEN INSERTING THEN 
     :'/! echo C:/wamp/bin/php/php5.3.5/php.exe C:/wamp/www/csv.php >> C:/wamp/www/log.txt' 
    WHEN UPDATING THEN 
     -- Include any code specific for when the trigger is fired from an UPDATE. 
    WHEN DELETING THEN 
     -- Include any code specific for when the trigger is fired from an DELETE. 
    END CASE; 
END; 
/