2011-06-09 9 views
2

私はPostgreSQLを初めて使用しています。私はPostgreSQL 9.0、db1、およびdb2に2つのデータベースを持っています。そして、私は読み込み専用のアクセス権を持っています。 PostgreSQLがデータベース間で行うことができないJOINやネストされたクエリを使って簡単に実現できるストアドファンクションを作成したいと思います。 DB1にPostgreSQLは2つのデータベースにまたがって結合します

、私は、何か私は、DB2での表2内のレコードの検索に使用できる外部キーのキーのセットを照会することができますTABLE1があります。ベストプラクティスは何

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

1つのオプションは、スキーマの使用である:http://www.postgresql.org/docs/8.4/interactive/ddl-schemas.html –

答えて

5

あるあなたがdb_linkのcontribに見たいと思うでしょう。

Cに慣れていれば、foreign data wrappersというかわいい機能もあります。これは、プレーンなSQLを使用してあらゆるソースを操作することができます。 Example with Twitter:あなたが調査することをお勧めします

SELECT from_user, created_at, text FROM twitter WHERE q = '#postgresql'; 
+1

これは、インストール後に正常に動作するように見えましたデータベース・リンク: 'dblinkをFROM(SELECT IN * table2.primary_key( 'DBNAME = DB1のユーザー=読み取り専用'、 は 'FOREIGN_KEY = TABLE1 FROM FOREIGN_KEY SELECT?' FROM * table2の を選択) TEMP1 AS( foreign_key varchar(11)) ); ' – MuffinMan

関連する問題