我是PostgreSQL的新手。我在PostgreSQL 9.0,db1和db2中有2个数据库,而对于db2我有只读访问权限。我想创建一个存储函数,否则可以通过JOIN或嵌套查询轻松完成,这是PostgreSQL跨数据库无法做到的。
在db1中,我有table1,我可以在其中查询一组外键,我可以用它来搜索db2中table2中的记录,如:
SELECT * from db2.table2 WHERE db2.table2.primary_key IN (
SELECT db1.table1.foreign_key FROM db1.table1 WHERE
db1.table1.primary_key="whatever");
在Postgres中执行此操作的最佳做法是什么?我不能在db2中使用临时表,并且在db2中运行的存储函数中传入外键作为参数似乎不是一个好的解决方案。
注意:键都是VARCHAR(11)
答案 0 :(得分:5)
您需要查看db_link contrib。
如果您熟悉C语言,那么还有一个名为foreign data wrappers的可爱功能。它允许使用纯SQL操作几乎任何源。 Example with Twitter:
SELECT from_user, created_at, text FROM twitter WHERE q = '#postgresql';