PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 27/09/2011 00:02:48

yann971
Membre

Creer une valeur à partir de plusieurs valeurs

Bonjour, je débute sur Postgre et j'utilise pour l'instant la version 8.4.
Je cherche, dans une table, à mettre en place une fonction qui créé automatiquement une valeur à partir de deux ou plusieurs valeurs déjà saisies.
Par exemple, pour un même enregistrement, si j'ai déjà saisi les champs 'commune' et 'altitude', je souhaite qu'une valeur dont la syntaxe soit 'communealtitude' soit générée automatiquement dans le champ suivant.
J'imagine qu'il faut créer un Trigger, mais je ne trouve pas la fonction adéquate.
Merci à celle ou celui qui pourra m'éclairer.

Yann971

Hors ligne

#2 27/09/2011 08:35:50

gleu
Administrateur

Re : Creer une valeur à partir de plusieurs valeurs

Tout d'abord, il vous faut créer une fonction trigger. Vous trouverez les détails sur http://docs.postgresql.fr/9.1/plpgsql-trigger.html pour le langage PL/pgsql. Je suppose que vous voulez concaténer les deux champs mais comme vous n'indiquez pas les types de données des deux champs, ça rend impossible une réponse plus approfondie. S'ils sont en texte, l'opérateur de concaténation est ||.


Guillaume.

Hors ligne

#3 27/09/2011 08:44:44

Marc Cousin
Membre

Re : Creer une valeur à partir de plusieurs valeurs

Par contre, je pense qu'il est intéressant de savoir pourquoi vous voulez créer un champ composé de ce type. Pouvez-vous l'expliquer ? Peut-être y a t'il une solution plus simple à ce que vous souhaitez faire ?


Marc.

Hors ligne

#4 27/09/2011 13:54:07

yann971
Membre

Re : Creer une valeur à partir de plusieurs valeurs

Bonjour, et merci pour ces réponses.
J'ai besoin de concaténer deux champs dont l'un est un 'text' l'autre un 'integer'. Le premier est un code (i.e. : AFL_AVE), l'autre est une mesure en mètres (i.e. : 550) le résultat est un 'text' (i.e. : AFL_AVE500). Le but est que, lors d'une incrémentation de la base de données par une interface de saisie (développée en php), l'opérateur ayant saisi son code de lieu dit et son altitude se retrouve avec une case automatiquement remplie lui donnant le nouveau code de sa station d'étude, qu'il peut décrire par la suite. Ce nouveau code est ensuite disponible dans un menu déroulant lorsque l'opérateur passe à la page de saisie suivante dans laquelle il rentre des informations sur sa nouvelle station d'étude.

Yann971

Hors ligne

#5 27/09/2011 15:31:19

flo
Membre

Re : Creer une valeur à partir de plusieurs valeurs

Pourquoi ne faites-vous pas cela dans l'application? (lorsque l'utilisateur saisit une nouvelle station d'étude). C'est beaucoup plus simple.
Pourquoi mettre tout dans la même table? J'imagine qu'il pourrait y avoir une sorte de table de référence avec la liste des codes de lieu dit. Une autre table contiendrait les stations d'étude (une station correspond à un lieu dit + une altitude).
Si j'ai bien compris votre besoin...

Je suppose que vous êtes débutant en bases de données?

Hors ligne

#6 27/09/2011 16:57:41

gleu
Administrateur

Re : Creer une valeur à partir de plusieurs valeurs

En laissant de côté les considérations importantes évoquées par Marc et Florence, pour faire la concaténation, vous devez utiliser l'opérateur || et convertir l'entier en texte. Quelque chose du style : champ1 || champ2::text


Guillaume.

Hors ligne

Pied de page des forums