[PostGreSQL] Insertion et récupération d'identifiant
Bonjour,
Je suis dans un cas, qui me parrait assez courrant mais sur lequel ma solution me parait pas trés jolie...
Prenons une table toute bête avec 2 champs, par exemple une table "Projets" :
- un entier auto-incrémenté, indentifiant unique et clé primaire du projet
- une chaine, représentant le nom d'un projet
Je dois faire une fonction qui renvoi l'identifiant en prenant en parametre le nom, et qui dois inserer le tupple si jamais il n'existe pas
Ma premiere solution a consisté a faire directement la requete d'insertion, et si elle renvoyait une erreur autre que "duplicate key", j'affichais l'erreur sinon je faisais mon select et revoyais l'identifiant...mais...
Ma configuration est la suivante : PHP4 et postgresSQL 8.1
PHP4 n'ayant pas de try/catch, si j'ai une erreur sur ma requete d'insertion, elle est affichée..(naturelement, il n'est pas question d'inhiber les message sd'erreurs/warnings du serveur)
Ma solution pas trés jolie consiste, dans le pire des cas et malheureusement le plus courrant, à effectuer 3 requetes :
requete 1) Un premier select qui test l'existance du projet
requete 2) Le projet n'existe pas, je l'insere
requete 3) Je refais un select pour récupérer l'identifiant fraichement créé
Je trouve ça pas trés jolie et avoir autant de requete augmente les chances d'erreurs...n'y a-t-il pas un moyen d'en diminuer le nombre?
merci à tous