dblink_build_sql_update — construye una sentencia UPDATE utilizando una tupla local, reemplazando los valores de los campos de la clave primaria con valores alternativos suministrados
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 puede ser útil para realizar la replicación
selectiva de una tabla local a una base de datos remota. Selecciona una fila
de la tabla local basándose en la clave primaria, y luego construye un comando SQL
UPDATE que duplicará esa fila, pero con los valores de la clave
primaria reemplazados por los valores del último argumento.
(Para hacer una copia exacta de la fila, simplemente especifica los mismos valores para
los dos últimos argumentos). El comando UPDATE siempre asigna
todos los campos de la fila; la principal diferencia entre esto y
dblink_build_sql_insert es que se asume que
la fila de destino ya existe en la tabla remota.
relname
Nombre de una relación local, por ejemplo foo o
myschema.mytab. Incluye comillas dobles si el
nombre mezcla mayúsculas y minúsculas o contiene caracteres especiales, por
ejemplo "FooBar"; sin comillas, la cadena
se convertirá a minúsculas.
primary_key_attnums
Números de atributos (basados en 1) de los campos de la clave primaria,
por ejemplo 1 2.
num_primary_key_attsEl número de campos de la clave primaria.
src_pk_att_vals_arrayValores de los campos de la clave primaria que se utilizarán para buscar la tupla local. Cada campo se representa en formato de texto. Se lanza un error si no hay ninguna fila local con estos valores de clave primaria.
tgt_pk_att_vals_array
Valores de los campos de la clave primaria que se colocarán en el comando
UPDATE resultante. Cada campo se representa en formato de texto.
Devuelve la sentencia SQL solicitada como texto.
A partir de PostgreSQL 9.0, los números de atributo en
primary_key_attnums se interpretan como números de columna
lógicos, correspondientes a la posición de la columna en
SELECT * FROM relname. Las versiones anteriores interpretaban los
números como posiciones físicas de las columnas. Hay una diferencia si alguna
columna a la izquierda de la columna indicada ha sido eliminada durante la vida útil
de la tabla.
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)