dblink_build_sql_update
Prev UpF.11. dblink — conectarse a otras bases de datos PostgreSQLHome Next

dblink_build_sql_update

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

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

Descripción

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.

Argumentos

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_atts

El número de campos de la clave primaria.

src_pk_att_vals_array

Valores 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.

Valor de retorno

Devuelve la sentencia SQL solicitada como texto.

Notas

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.

Ejemplos

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)

Prev Up Next
dblink_build_sql_delete Home F.12. dict_int — ejemplo de diccionario de búsqueda de texto completo para enteros