dblink_build_sql_update(text relname, int2vector primary_key_attnums, integer num_primary_key_atts, text[] src_pk_att_vals_array, text[] tgt_pk_att_vals_array) returns text
dblink_build_sql_update
はローカル側のテーブルの一部を選択した複製をリモートデータベースに行う場合に有用になる可能性があります。
これはプライマリキーによりローカルテーブルから行を選択し、そのプライマリキー値を最後の引数で与えた値に置き換えて、行を複製するUPDATE SQLコマンドを構築します。
(行をそのまま複製する場合は、単に最後の2つの引数に同じ値を指定してください。)
このUPDATEコマンドは常に行のすべてのフィールドを代入します。
この関数とdblink_build_sql_insert
の主な違いは、対象の行がリモート側のテーブルにすでに存在すると仮定している点です。
例えばfooやmyschema.mytabといったローカル側のリレーションの名前です。 例えば"FooBar"のように名前に大文字小文字が混在する場合や特殊文字が含まれる場合は二重引用符で括ってください。 引用符がないと文字列は小文字に変換されます。
例えば1 2といった、プライマリキーフィールドの属性番号(1始まり)です。
プライマリキーフィールドの個数です。
ローカルタプルを検索するために使用されるプライマリキーフィールドの値です。 各フィールドはテキスト形式で表されます。 これらのプライマリキーの値を持つ行がローカル側に存在しない場合はエラーが発生します。
最終的なUPDATEコマンドにおいて置き換えられるプライマリキーフィールドの値です。 各フィールドはテキスト形式で表されます。
PostgreSQL 9.0の段階で、primary_key_attnumsの中の属性数は、SELECT * FROM relname内の列の位置に対応する、論理的列数として翻訳されます。 以前のバージョンは物理的な列の位置として数を翻訳しました。 テーブルの存続期間中に、表示された列の左側のどんな列でも削除されると差異が生じます。