【问题标题】:How to update table in database1 from function in database2 in PostgreSQL?如何从 PostgreSQL 中的 database2 中的函数更新 database1 中的表?
【发布时间】:2010-02-23 14:31:42
【问题描述】:

有没有办法从 database2 中的函数更新 database1 中的表(两个数据库在同一台服务器上)?基本上是在 PostgreSQL 中跨数据库更新。

函数由触发器执行,但这无关紧要。

-= 编辑 =- 我知道我可以使用 DBLink 来实现,但我想尽可能少地修改源数据库。我正在寻找其他选择。

【问题讨论】:

    标签: sql database postgresql plpgsql


    【解决方案1】:

    您可以将两个数据库放在同一个 Postgresql 数据库中,但使用不同的模式。

    这样,它们在逻辑上仍然是分开的,并且没有名称冲突,但是您可以访问模式之间的对象。

    【讨论】:

      【解决方案2】:

      如果可用,DBLink 将是执行此操作的标准方法。如果没有,如果您安装了诸如 PL/pgperl 之类的过程语言(PL/pgsql 除外),您可以使用该语言连接到数据库 2 并调用您的更新语句。或者您可以使用过程语言调用一个调用 psql 的 shell 脚本来进行更新。

      【讨论】:

      • 好吧,看来别无选择。我得出的结论是,在我的应用程序中部署 dblink.dll 毕竟不是一个坏主意。感谢您的回答。
      【解决方案3】:

      不清楚您在寻找什么。

      您知道 PostgreSQL 中的数据库是独立的,您不能直接从另一个访问一个数据库(根据设计)。

      您知道 dblink 扩展可以让您连接两个数据库(相同或不同的服务器)。

      您发现 dblink 扩展过于侵入(我怀疑排除了 small_duck 合并两个数据库的想法)。

      鉴于 dblink 是该领域的默认选择,我不确定您认为会有什么比 dblink 更简单。

      【讨论】:

      • 我正在做的是为使用 postgresql 的应用程序编写扩展程序。我想避免部署 dblink 以尽可能少地弄乱应用程序 db。根据答案,这似乎是唯一的方法(考虑到扩展的工作量和性能)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-20
      • 2019-08-27
      相关资源
      最近更新 更多