68user's page 掲示板

Prev< No. 4208> Next  [最新発言に戻る] [過去ログ一覧]
No. 4208 # 68user 2005/07/27 (水) 23:36:50
>>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

いずれも何も試さずに言ってます。念のため。

Prev< No. 4208> Next  [最新発言に戻る] [過去ログ一覧]