繁体   English   中英

PostgreSQL FOREIGN KEY与第二个数据库

[英]PostgreSQL FOREIGN KEY with second database

我在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 - 第二个数据库中的表

如何使用此数据库进行正确查询?

我自己没有机会使用它,但你可能想要查看外部数据包装器 ,它本质上是dblink的后继者。 特别是postgres-fdw

一旦外籍家政工人的常规安装到位(步骤在上面的链接1-3),你可以通过创建一个外部表 CREATE FOREIGN TABLE ,就像在远程数据库的表中定义,然后使用该表作为的一部分外键 CONSTRAINT ,看它是否有效。

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

必须引用本地表

但是,如下面的链接所述,您可以使用一个使用跨服务器连接的触发器(由dblink促成)来模拟内置的约束方法?

例如,您可以在INSERT上设置触发器,检查是否存在给定的FK以帮助强制执行参照完整性,或者在DELETE进行级联

http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=101322

PS会不惜一切代价避免这种情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM