dblink_build_sql_update

名前

dblink_build_sql_update -- プライマリキーフィールドの値として提供された値を使用したUPDATE文を構築します。

概要

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の主な違いは、対象の行がリモート側のテーブルにすでに存在すると仮定している点です。

引数

relname

例えばfoomyschema.mytabといったローカル側のリレーションの名前です。 例えば"FooBar"のように名前に大文字小文字が混在する場合や特殊文字が含まれる場合は二重引用符で括ってください。 引用符がないと文字列は小文字に変換されます。

primary_key_attnums

例えば1 2といった、プライマリキーフィールドの属性番号(1始まり)です。

num_primary_key_atts

プライマリキーフィールドの個数です。

src_pk_att_vals_array

ローカルタプルを検索するために使用されるプライマリキーフィールドの値です。 各フィールドはテキスト形式で表されます。 これらのプライマリキーの値を持つ行がローカル側に存在しない場合はエラーが発生します。

tgt_pk_att_vals_array

最終的なUPDATEコマンドにおいて置き換えられるプライマリキーフィールドの値です。 各フィールドはテキスト形式で表されます。

戻り値

要求したSQL文をテキストとして返します。

注釈

PostgreSQL 9.0の段階で、primary_key_attnumsの中の属性数は、SELECT * FROM relname内の列の位置に対応する、論理的列数として翻訳されます。 以前のバージョンは物理的な列の位置として数を翻訳しました。 テーブルの存続期間中に、表示された列の左側のどんな列でも削除されると差異が生じます。

SELECT dblink_build_sql_update('foo', '1 2', 2, '{"1", "a"}', '{"1", "b"}');
                   dblink_build_sql_update
-------------------------------------------------------------
 UPDATE foo SET f1='1',f2='b',f3='1' WHERE f1='1' AND f2='b'
(1 row)