PostgreSQL 9.0.0文書
前のページ | 巻戻し |  | 早送り | 次のページ

# 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`

  例えば`foo`や`myschema.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)

前のページ | ホーム | 次のページ
dblink_build_sql_delete | 上に戻る | dict_int