dblink_build_sql_update
Name
dblink_build_sql_update -- 使用本地元组建立UPDATE语句, 使用可选的已提供的值替换主键字段
Synopsis
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
可以用于执行远程数据库本地表的选择行复制。 它从基于主键的本地表选择行,然后建立一个SQL UPDATE
命令复制该行, 但是随着主键值被最后参数中的值替换。 (为了准确拷贝行,请为最后两个参数指定同一值)。UPDATE
命令总是 分配行中所有字段;在这个和dblink_build_sql_insert
之间的 主要区别是目标行已经存在于远程表中是个假设。
参数
relname
本地关系名字,比如foo
或者 myschema.mytab
。如果名字是混合情况下或者包含特殊字符,那么包含双引号, 比如"FooBar"
;没有引号,则字符串被折叠成小写字母。
primary_key_attnums
主键字段的属性数量(1维),比如1 2
。
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)