>>4207 中川 またそこから始めるんですか? 全然 4202 から状況が変わってないように見えますが、 4203-4206 のやりとりは何だったんでしょうか。 まぁ、それはそれとして、トリガを使う案は - DB1 にテーブル T1、DB2 にテーブル T2 がある - DB1 の T1 のカラム A には、DB2 の T2 のカラム A に存在する値しか入れたくない - しかし PostgreSQL の外部キーでは、dblink を使えないようだ - ならば DB2 の T2 と同じ内容のテーブル T2 を DB1 にも作って、そこに外部キーを設定しては - となると DB2 の T2 と、DB1 の T2 の間でテーブル内容の同期をとる必要がある - では DB2 の T2 にトリガをセットして、T2 に対する INSERT・UPDATE・DELETE が 発生したら、自動的に DB1 の T2 に同じデータを反映するようにするのがいいのでは というものです。DB2 の T2 がごくまれにしか更新されないテーブルであれば、 トリガを使う必要はないかもしれません (30分に一回 INSERT INTO SELECT で DB2 の T2 の内容を DB1 の T2 にコピーするとか)。 別の案としては、DB1 の T1 に INSERT・UPDATE がかかったときに、トリガで DB2 の T2 のカラム A を見にいって、データが存在しなかったら RAISE して エラーにする、というのもあります。 http://www.postgresql.jp/document/pg803doc/html/plpgsql-errors-and-messages.html いずれも何も試さずに言ってます。念のため。 |