我在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;
第三个查询返回:
app_item
-第一个数据库fias_addrobj
-第二个数据库如何使用此数据库进行正确查询?
最佳答案
我自己没有机会使用它,但是您可能想研究Foreign Data Wrappers,它实际上是dblink
的后继者。特别是postgres-fdw。
一旦完成了fdw的常规设置(上面链接中的步骤1-3),您就可以通过CREATE FOREIGN TABLE
创建外部表,该表的定义类似于远程数据库中的表,然后将该表用作外键的一部分CONSTRAINT
,看看它是否有效。
如果这不起作用,则另一个选择是拥有一个过程,该过程将ETL的数据(例如,通过Python脚本)从远程服务器传递到本地服务器(例如,每小时或每天一次,具体取决于大小) ),那么您将有一个真正的本地表可用于外键CONSTRAINT
中。它不是实时的,但可以满足您的需求。
关于sql - 具有第二个数据库的PostgreSQL FOREIGN KEY,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26346222/