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

Requêtes PostgreSQL Discussion :

Trigger majuscule sur champ


Sujet :

Requêtes PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 68
    Par défaut Trigger majuscule sur champ
    Bonjour,

    Je trouve de la documentation sans problème concernant les triggers mais je n'arrive pas à créer celui que je veux.

    Je souhaite que lors de l'insertion d'un tuple dans une table 'client', la chaine de caractères de la colonne 'nom' soit mise en majuscule.

    J'ai réalisé ceci mais erreur : (ERREUR: erreur de syntaxe sur ou près de " SET " at character 69)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE TRIGGER majusculeClient
    BEFORE INSERT ON client
    FOR EACH ROW
    SET nom = upper(new.nom);

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Tu ne peux pas directement mettre du code dans le create trigger, il faut définir une fonction à part.
    Compare ta syntaxe avec la doc de create trigger:
    http://www.postgresql.org/docs/8.3/s...tetrigger.html

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 68
    Par défaut
    OK, si j'ai bien compris je commence par créer ma fonction (comportant la mise en majuscule) et ensuite j'écris mon trigger qui déclenchera cette fonction à tel ou tel moment ?

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    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 : 22 002
    Billets dans le blog
    6
    Par défaut
    Vous devez procéder en deux temps :

    1) créer une fonction trigger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE FUNCTION P_I_client() 
    RETURNS TRIGGER 
    AS 
    ELSIF (TG_OP = 'INSERT')
    THEN
     
      ...
    END IF;
    2) rerouter le code de trigger vers la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE TRIGGER majusculeClient
    BEFORE INSERT ON client
    FOR EACH row
    EXECUTE PROCEDURE P_I_client();
    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/ * * * * *

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 68
    Par défaut
    Merci beaucoup Sqlpro, j'essaye de suite

    J'ai une erreur de syntaxe sur ou près de "ELSIF" at character 5

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    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 : 22 002
    Billets dans le blog
    6
    Par défaut
    C'est un IF, mille excuse... Pour le reste, c'est à vous de la faire... Plongez vous dans la doc.. C'est pas simple sous PostGreSQL !

    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/ * * * * *

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/02/2014, 15h22
  2. Trigger function update sur champs XML
    Par ldiaz dans le forum SQL Procédural
    Réponses: 24
    Dernier message: 20/06/2012, 17h01
  3. Forcer la majuscule sur un champ
    Par dupin40 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/04/2007, 15h52
  4. Trigger UPDATED sur plusieurs champs
    Par Maroxye dans le forum Développement
    Réponses: 4
    Dernier message: 03/04/2007, 14h08
  5. tabulation sur champs de saisie
    Par xClyde dans le forum Flash
    Réponses: 2
    Dernier message: 25/09/2003, 16h49

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