【发布时间】:2010-02-23 14:31:42
【问题描述】:
有没有办法从 database2 中的函数更新 database1 中的表(两个数据库在同一台服务器上)?基本上是在 PostgreSQL 中跨数据库更新。
函数由触发器执行,但这无关紧要。
-= 编辑 =- 我知道我可以使用 DBLink 来实现,但我想尽可能少地修改源数据库。我正在寻找其他选择。
【问题讨论】:
标签: sql database postgresql plpgsql
有没有办法从 database2 中的函数更新 database1 中的表(两个数据库在同一台服务器上)?基本上是在 PostgreSQL 中跨数据库更新。
函数由触发器执行,但这无关紧要。
-= 编辑 =- 我知道我可以使用 DBLink 来实现,但我想尽可能少地修改源数据库。我正在寻找其他选择。
【问题讨论】:
标签: sql database postgresql plpgsql
您可以将两个数据库放在同一个 Postgresql 数据库中,但使用不同的模式。
这样,它们在逻辑上仍然是分开的,并且没有名称冲突,但是您可以访问模式之间的对象。
【讨论】:
如果可用,DBLink 将是执行此操作的标准方法。如果没有,如果您安装了诸如 PL/pgperl 之类的过程语言(PL/pgsql 除外),您可以使用该语言连接到数据库 2 并调用您的更新语句。或者您可以使用过程语言调用一个调用 psql 的 shell 脚本来进行更新。
【讨论】:
不清楚您在寻找什么。
您知道 PostgreSQL 中的数据库是独立的,您不能直接从另一个访问一个数据库(根据设计)。
您知道 dblink 扩展可以让您连接两个数据库(相同或不同的服务器)。
您发现 dblink 扩展过于侵入(我怀疑排除了 small_duck 合并两个数据库的想法)。
鉴于 dblink 是该领域的默认选择,我不确定您认为会有什么比 dblink 更简单。
【讨论】: