Bonjour,
Je cherche à importer des données dans une table sous firebird 2.5, depuis un ensemble de donnée externe.
J'utilise update or insert, la recherche dans ma table s'effectue non pas sur la clé primaire mais sur la clé de l'ensemble de donnée externe.
Les valeurs sont fournies par paramètre.
La table possède un trigger qui alloue une valeur de clé primaire si la clé primaire fournie est négative. Cette valeur de clé primaire est requise pour l'insertion.
update or insert into matable(ChampClé, ChampCléExterne, AutreChamp)
values (-1, :ValeurCléExterne, :AutreChamp)
matching (ChampCléExterne)
Ca fonctionne bien lors de l'insertion initiale, mais écrase la valeur de la clé avec la valeur '-1' lors de la seconde exécution.
Je m'attendais à ce que update or insert n'altère pas la valeur de clé primaire en cas de update (par définition, elle ne peut être modifiée...)
Comment faites vous pour contourner ce problème?
J'ai regardé l'instruction merge mais elle se base sur une requête interne, or je dois fournir les valeurs par programme
Merci,
g.
Partager