【问题标题】:Async foreign tables, foreign data wrapper异步外部表,外部数据包装器
【发布时间】:2017-06-07 06:07:47
【问题描述】:

我正在使用 postgres 中的外部数据包装器,使用 multicorn 并使用触发器在外部表中插入数据,但是我不希望 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;

【问题讨论】:

  • @VaoTsun 我在 postgres 中使用触发器,不希望触发器有任何响应。而是使用对触发器的异步调用。只需调用触发器并忘记它。
  • 我没有从触发器得到任何响应。没事儿。但它仍然等待完成执行。我什至不想要它。 @VaoTsun
  • 是的。没错@VaoTsun
  • 你说“不要等它结束”这怎么可能。你能详细说明一下吗。 @VaoTsun
  • 不知道。我使用 dblink 进行异步操作。不知道是否还有其他的猴子破解方法

标签: postgresql foreign-data-wrapper multicorn


【解决方案1】:

postgres dblink 扩展允许通过dblink-send-query 命令异步调用远程服务器。

不确定它如何在触发器中建立多个连接。这里要注意资源泄露

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 2020-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多