【问题标题】:call php script from oracle trigger从 oracle 触发器调用 php 脚本
【发布时间】:2010-10-13 21:44:55
【问题描述】:

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

插入来自非常古老的遗留应用程序,很少有机会查看源代码。行被频繁插入,可能是一次约 1000 行的批次,也可能是 30 分钟内的一行,因此不能每隔 5 秒检查一次此表。

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

提前谢谢...

【问题讨论】:

标签: php oracle triggers call


【解决方案1】:

当您说“php 脚本”时,您的字面意思是命令行脚本,还是通过 apache/etc 运行的一段 php。

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

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

【讨论】:

    【解决方案2】:
    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;
    /
    

    【讨论】:

      猜你喜欢
      • 2010-11-30
      • 1970-01-01
      • 2015-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-09
      相关资源
      最近更新 更多