IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Concaténation automatique sur une colonne [9.2]


Sujet :

PostgreSQL

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 20
    Points : 24
    Points
    24
    Par défaut Concaténation automatique sur une colonne
    Bonjour à tous,

    j'ai deux tables: observateurs (id_obs, nom, prenom) et sortie (id_sortie, date, temperature, libelle).

    Mon but c'est de pouvoir dans la colonne "libelle" avoir une concaténation de type: date , prenom nom.

    la requête suivante me donne bien le type que je souhaite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT sortie.date || ' , ' || observateur.prenom ||' ' || observateur.nom
    FROM faune.sortie, faune.fk_obs_sortie, faune.observateur
    WHERE sortie.id_sortie=fk_obs_sortie.id_sortie AND observateur.id_obs=fk_obs_sortie.id_obs;
    maintenant (et c'est là que je bloque), faudrait avoir le résultat de cette requête dans la table sortie et manière automatique à chaque insertion d'une sortie ou d'une modification.

    J'ai tenter de faire un trigger:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    CREATE OR REPLACE FUNCTION UPDATE()
    RETURNS "trigger" AS $nomlibelle$
     
    BEGIN
     
    	IF sortie.date AND observateur.prenom AND observateur.nom IS NoT NULL 
    	THEN
    	NEW.nomlibelle:=coalesce(NEW.date||' , '||NEW.prenom||' '||NEW.nom);
    	END IF;
    	RETURN NEW;
     
    END;
    $nomlibelle$
    LANGUAGE 'plpgsql';
     
    CREATE TRIGGER UPDATE 
    BEFORE INSERT OR UPDATE
    ON faune.sortie FOR EACH ROW
    EXECUTE PROCEDURE UPDATE();
    mais là ça ne marche pas... je ne peux même pas insérer une nouvelle sortie...

    est-ce qu'il faut bien passer par un trigger? si oui, où est mon erreur?
    sinon quelle est la marche à suivre?

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    au lieu de faire une usine à gaz dont les performances seront lamentables, pourquoi ne pas simplement créer une vue ?

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 20
    Points : 24
    Points
    24
    Par défaut
    Eh bien je n'y avais pas pensé... focalisé sur des bouts de projets glanés ici et là...
    Mais effectivement, la vue est une très bonne solution ! Merci de m'avoir remis sur les rails !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL] Groupement sur une colonne et concaténation d'une autre
    Par granchef dans le forum SAS Base
    Réponses: 2
    Dernier message: 16/04/2014, 15h01
  2. Réponses: 8
    Dernier message: 25/05/2009, 13h40
  3. concaténer plusieurs enregistrements sur une colonne
    Par pierre22 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 10/09/2007, 19h26
  4. Trigger sur une colonne ?
    Par hpalpha dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/03/2004, 14h16
  5. Check sur une colonne de table "en cours"
    Par in dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/07/2003, 09h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo