dblink_build_sql_update — construit une instruction de mise à jour à partir d'un tuple local, en remplaçant les valeurs des champs de la clé primaire par celles fournies
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
peut être utile pour réaliser
une réplication sélective d'une table locale vers une base de donnée
distante. Elle sélectionne une ligne à partir de la table locale en se
basant sur la clé primaire, puis construit une commande SQL
UPDATE
qui duplique cette ligne, mais avec pour valeurs
de clé primaire celles du dernier argument.
(Pour faire une copie exacte de la ligne, on indique les mêmes valeurs
pour les deux derniers arguments.) La commande UPDATE
affecte toujours tous les champs de la ligne -- la différence
principale entre cette instruction et dblink_build_sql_insert
est
l'hypothèse de l'existence de la ligne cible dans la table distante.
relname
Le nom d'une relation locale, par exemple foo
ou
monschema.matable
. Ajouter des guillemets doubles
si le nom est en casse mixte ou contient des
caractères spéciaux, par exemple "FooBar"
;
sans guillemets, la chaîne est forcée en minuscule.
primary_key_attnums
Les numéros des attributs (commençant à 1) des champs de la clé primaire,
par exemple 1 2
.
num_primary_key_atts
Le nombre de champs de la clé primaire.
src_pk_att_vals_array
Les valeurs des champs de la clé primaire à utiliser pour identifier le tuple local. Chaque champ est représenté dans sa forme textuelle. Une erreur est renvoyée s'il n'y a pas de lignes locales avec ces valeurs de clé primaire.
tgt_pk_att_vals_array
Les valeurs des champs de la clé primaire à placer dans la commande
UPDATE
résultante. Chaque champ est représenté dans
sa forme textuelle.
Renvoie l'instruction SQL demandée en tant que texte.
À partir de PostgreSQL 9.0, les numéros des
attributs dans primary_key_attnums
sont interprétés
comme des numéros logiques de colonnes correspondant à la position de la
colonne dans SELECT * FROM relation
. Les versions
précédentes interprétaient les numéros comme des positions physiques de
colonnes. Une différence existe si une des colonnes à gauche de la colonne
indiquée a été supprimé de la table.
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)