0

マルチコーンを使用し、トリガーを使用して外部テーブルにデータを挿入するpostgresの外部データラッパーに取り組んでいますが、postgresがトリガー後の応答を待たないようにしたいので、トリガーが挿入してから忘れます。どのようにそれが可能でしょうか。

実際に私はそれを外部テーブルに使用しています

CREATE FOREIGN TABLE media_es (
    id BIGINT,
    title TEXT,
    description TEXT,
    tags TEXT,
    query TEXT,
    score NUMERIC
  )
  SERVER multicorn_es
  OPTIONS (
      host 'elasticsearch',  
      port '9200',
      index 'test',
      type 'media',
      rowid_column 'id',
      query_column 'query',
      score_column 'score'
  );


CREATE TRIGGER es_insert_media
      AFTER INSERT
          ON media
      FOR EACH ROW
          EXECUTE PROCEDURE index_media();

CREATE OR REPLACE FUNCTION index_media()
      RETURNS trigger
      AS $def$
          BEGIN
          INSERT INTO media_es
                (
                  id,
                  title,
                  description,
                  tags
              )
          VALUES
              (
                  NEW.id,
                  NEW.title,
                  NEW.description,
                  NEW.tags
              )
          ;
          RETURN NEW;  
      END;
  $def$ LANGUAGE plpgsql;
4

1 に答える 1

0

postgres dblink拡張により、 dblink-send-queryコマンドを介してリモート サーバーへの非同期呼び出しが可能になります。

複数の接続を確立するという点で、トリガー内でどのように機能するかわかりません。ここでリソースのリークに注意する必要があります

于 2019-09-13T12:36:06.533 に答える