PostgreSQL 的 FOREIGN KEY 与第二个数据库[英] PostgreSQL FOREIGN KEY with second database

本文是小编为大家收集整理的关于PostgreSQL 的 FOREIGN KEY 与第二个数据库的处理方法,想解了PostgreSQL 的 FOREIGN KEY 与第二个数据库的问题怎么解决?PostgreSQL 的 FOREIGN KEY 与第二个数据库问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我在 PostgreSQL 9.3 上运行以下查询:

CREATE TABLE "app_item" 
  ( 
     "id"          SERIAL NOT NULL PRIMARY KEY, 
     "location_id" UUID NOT NULL 
  ); 

CREATE INDEX app_item_e274a5da 
  ON "app_item" ("location_id"); 

ALTER TABLE "app_item" 
  ADD CONSTRAINT app_item_location_id_5cecc1c0b46e12e2_fk_fias_addrobj_aoguid 
  FOREIGN KEY ("location_id") REFERENCES "fias_addrobj" ("aoguid") deferrable 
  initially deferred;

第三次查询返回:

<块引用>

错误:关系"fias_addrobj"不存在

  • app_item - 第一个数据库中的表
  • fias_addrobj - 第二个数据库中的表

如何用这个数据库做正确的查询?

推荐答案

我自己没有机会使用这个,但你可能想看看 Foreign Data Wrappers,它们本质上是dblink 的继任者.特别是 postgres-fdw.

一旦 fdw 的一般设置到位(上面链接中的步骤 1-3),您可以通过 CREATE FOREIGN TABLE 创建一个 foreign table,定义就像远程数据库中的表一样,然后将该表用作外键 CONSTRAINT的一部分,看看它是否有效.

如果这不起作用,另一种选择是使用 ETL 将远程服务器的数据(例如,通过 Python 脚本)传输到本地服务器(例如,在每小时或每天一次,具体取决于大小),然后您将有一个真正的本地表在 外键 CONSTRAINT 中使用.它不会是实时的,但根据您的需要,可能就足够了.

本文地址:https://www.itbaoku.cn/post/1763894.html