2010-11-24 18 views
1

特定のステータスであるdbフィールドでプロセスコールを作成する必要があります。 dbトリガーでcURL呼び出しを実行できると聞いていますが、Googleが使用できるものを返すほど親切ではありません。postgresトリガーからcURL呼び出しを実行できますか

  1. はこれが行うことができます。

    だから私は私の質問には三つの部分であると思いますか?

  2. を参照してください。
  3. 代替ソリューション?

ワークフロー:

デシベルフィールドがステータスで更新され、私の仕事の流れにおける次のステップを実行するスクリプト/リクエスト/プロセスをキックオフする必要があります(これはPHPスクリプトです)に記録されて引っ張ってきますdbを処理して別のステップを処理し、結果をdbに更新します。

答えて

4

//トン。またPostgres — pl/sh、pl/perl、pl/pythonなどに安全でない言語をインストールする必要があります。

この問題のために2つのよりよい解決策があります

  • がデータベースに接続し、プロセスを持っているあなたのトリガ—によって生成NOTIFYイベントについてLISTEN Sこれは即座に動作します。

  • たとえば、cronスクリプトを使用して定期的に新しいデータをチェックします。これは遅延を伴います。

+1

洞察に感謝しますが、遅れはありません。即時性が必要です –

+0

あなたの答えは聞いている/通知しています。 – Tometzky

1

あなたが探しているものは、必要なスクリプトを実行するポストグルのトリガーだと思います。トリガーはthe documentationで説明されています。新しいトリガーを追加する構文はhereです。あなたが探しているトリガタイプは、AFTER UPDATEトリガのようです。私が知る限り、実行するスクリプトは、フィールドが必須のステータスかどうかをチェックする必要があります。ポストグルは常にトリガーを実行するからです。

+0

これは興味深いように見えますが、これ以上調べる必要があります。あなたがC言語でトリガーを書くことができるようにボーナス –

3

シェルスクリプトを呼び出すことができる場合は、 http://plsh.projects.postgresql.org/ を呼び出すことができます。

  • リモートサーバーがオフラインになると

    しかし、私はアプローチについての不気味な感覚を得る...、データの矛盾?

オルタナティブ:

  • 私は、トリガーでカスタマイズされた制約やdenormalisationのみをビジネスロジックを入れていないだろう。

  • 中間層またはストアード・プロシージャーで行う必要があることを実行します。

よろしく、それはあなたのデータベースが非常に遅くなりますので、あなたは、トリガーブロック取引として、そのためにトリガを使用してはならない

+0

スクリプトコールはちょうどデータベースからデータを引っ張るプロセスの瞬時性をキックオフします。これは後で行うことができますが、最速のリターンを可能にします。 –

関連する問題