3

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

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

  1. これはできますか?
  2. 参照?
  3. 代替ソリューション?

ワークフロー:

dbフィールドはステータスで更新されます。ワークフローの次のステップを実行するスクリプト/リクエスト/プロセスを開始する必要があります(これはPHPスクリプトです)。データベースに記録されたものをプルして別のステップを処理し、データベースを結果。

4

3 に答える 3

7

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

この問題には 2 つのより良い解決策があります。

  • データベースに接続するプロセスと、トリガーによって生成されたNOTIFYイベントのLISTENを用意します。これは即座に機能します。

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

于 2010-11-25T16:35:14.917 に答える
3

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

しかし、そのアプローチに不気味さを感じます...

  • リモートサーバーがオフラインになると、データの不整合??

別:

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

  • 中間層またはストアド プロシージャのいずれかを使用して、必要なことを行います。

よろしく、//t

于 2010-11-24T22:03:55.850 に答える
1

あなたが探しているのは、必要なスクリプトを実行する postgres のトリガーだと思います。トリガーについてはドキュメントで説明されています。新しいトリガーを追加するための構文については、こちらで説明されています。お探しのトリガー タイプは、AFTER UPDATE トリガーのようです。私の知る限り、postgres は常にトリガーを実行するため、実行するスクリプトはフィールドが必要なステータスであるかどうかを確認する必要があります。

于 2010-11-24T21:55:28.173 に答える