Vous n'êtes pas identifié(e).
Pages : 1
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
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
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
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
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
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
Pages : 1