从oracle触发器调用php脚本

时间:2010-10-13 21:44:55

标签: php oracle triggers call

问题如下:插入行后我有一个oracle触发器。从触发器开始,我想调用一个php脚本并将刚插入的行字段作为参数传递。

Insert来自非常古老的遗留应用程序,几乎没有机会查看源代码。行经常插入,可以是一次约1000行的批次,也可以是30分钟内的一行,所以每次检查这个表,比方说,5秒不是一个选项。

所以,Idea是要有oracle触发器,每次插入时都会触发并调用我的php脚本?有什么想法吗?

提前致谢...

2 个答案:

答案 0 :(得分:2)

当你说“php script”时,你的字面意思是命令行脚本,或者是通过apache / etc运行的一大块php。

如果是前者,那就去OMG小马。否则我会使用UTL_HTTP来调用Apache / PHP。实际上,我可能会考虑使用它(如果需要,更新你的php / c#)。

请记住..触发器是事务性的...如果您绝对必须从触发器调出,请注意您的触发器可能会运行多次(由于query restart)并且可能完全回滚,导致您的外部(可能是非事务性的)php调用现在无效。如果你的php无法处理这个问题,那么你的触发器可能会创建一个作业甚至是AQ中的消息,这也会加快处理速度,你可能不希望你的插件等待外部Web调用

答案 1 :(得分: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;
/
相关问题