postgresトリガーからcURL呼び出しを実行できますか

database database-trigger php postgresql triggers
postgresトリガーからcURL呼び出しを実行できますか

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

だから、私の質問は3つの部分だと思います:

  1. これはできますか?

  2. 参照?

  3. 代替ソリューション?

ワークフロー:

dbフィールドはステータスで更新されます。スクリプト内の次のステップを実行するスクリプト/リクエスト/プロセスを開始する必要があります(これはPHPスクリプトです)。結果。

  2  2


ベストアンサー

トリガーはトランザクションをブロックするため、トリガーを使用しないでください。データベースが非常に遅くなります。 また、安全でない言語をPostgresにインストールする必要があります— pl / sh、pl / perl、pl / pythonまたはその他。

この問題には、次の2つの解決策があります。

  • データベースに接続するプロセスがあり、
    LISTENs for NOTIFYトリガーによって生成されたイベント—これは即座に機能します。

  • cronスクリプトなどを使用して、新しいデータを定期的に確認します-
    これは遅れて機能します。

5


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

しかし、アプローチについて不気味な気持ちになります…​

  • リモートサーバーがオフラインになった場合、データの不整合はありますか??

代替案

  • ビジネスロジックをトリガーに入れず、カスタマイズされた制約のみを入れます
    または非正規化。

  • 中間層またはストアドプロシージャで必要なことを行います。

よろしく、// t

3


あなたが探しているのは、必要なスクリプトを実行するpostgresのトリガーだと思います。 トリガーはhttp://www.postgresql.org/docs/8.1/interactive/triggers.html [ドキュメント]で説明されています。新しいトリガーを追加するための構文はhttp://www.postgresql.org/docs/8.1で説明されています/interactive/sql-createtrigger.html [こちら]。 お探しのトリガータイプは、AFTER UPDATEトリガーのようです。 私の知る限り、postgresは常にトリガーを実行するため、実行するスクリプトはフィールドが必須ステータスであるかどうかを確認する必要があります。

1


タイトルとURLをコピーしました