dblink_build_sql_insert — ローカル側のタプルを使用し、主キーフィールドの値を別の提供される値に置き換えてINSERT文を構築します
dblink_build_sql_insert(text relname,
int2vector primary_key_attnums,
integer num_primary_key_atts,
text[] src_pk_att_vals_array,
text[] tgt_pk_att_vals_array) returns textdblink_build_sql_insertはローカル側のテーブルの一部を選択した複製をリモートデータベースに行う場合に有用になる可能性があります。
これは主キーによりローカルテーブルから行を選択し、その主キー値を最後の引数で与えた値に置き換えて、行を複製するINSERT SQLコマンドを構築します。
(行をそのまま複製する場合は、単に最後の2つの引数に同じ値を指定してください。)
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最終的なINSERTコマンドにおいて置き換えられる主キーフィールドの値です。
各フィールドはテキスト形式で表されます。
要求したSQL文をテキストとして返します。
PostgreSQL 9.0の段階で、primary_key_attnumsの中の属性数は、SELECT * FROM relname内の列の位置に対応する、論理的列数として翻訳されます。
以前のバージョンは物理的な列の位置として数を翻訳しました。
テーブルの存続期間中に、表示された列の左側のどんな列でも削除されると差異が生じます。
SELECT dblink_build_sql_insert('foo', '1 2', 2, '{"1", "a"}', '{"1", "b''a"}');
dblink_build_sql_insert
--------------------------------------------------
INSERT INTO foo(f1,f2,f3) VALUES('1','b''a','1')
(1 row)