Bonjour,
je suis en train de développer une application en C avec une base de données postgreSQL et je débute seulement avec postgreSQL même si j'avais déja manipulé d'autres base de données auparavant.
Je vous explique mon problème. J'ai créé un trigger after qui lance une fonction créée en C. Cette fonction lance un appel de procédure sur un serveur distant afin qu'il récupère la ligne que l'on vient d'insérer. Le problème est que à priori tant que le trigger ne s'est pas fini l'insertion n'est pas considéré comme valide. Je ne peux pas récupérer l'élément inséré tant que le trigger n'est pas fini or, c'est dans le trigger que j'appelle la fonction qui récupère la ligne insérée via un SELECT .
Je me suis rendu compte de cela en faisant quelques petits tests genre mettre un sleep(20) dans le trigger et voir que mon insertion dure alors plus de 20 secondes.
Pour éviter ce problème j'ai donc appelé ma procédure distante via un fork() pour créer un nouveau processus mais le problème est que je ne peux pas savoir si l'insertion s'est fini ou pas c'est-à-dire que si ma base de données se mettait a ramer lors de l'insert mon trigger ne le saurait pas et je ne pourrais pas récupérer la ligne insérée.
Je ne sais pas si j'ai été clair en tout cas voila mes soucis si quelqu'un peut m'aider pour me dire par exemple comment savoir lorsqu'un INSERT est fini.
Merci par avance,
GuiGeek
Partager