dblink_build_sql_insert — construye una sentencia INSERT utilizando una tupla local, reemplazando los valores de los campos de la clave primaria con valores alternativos suministrados
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 text
dblink_build_sql_insert 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
INSERT 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).
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
INSERT 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_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)