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 :

Problème création trigger


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 12
    Par défaut Problème création trigger
    Bonjour tout le monde,

    Je viens vers vous pour un petit problème, enfin plutôt une requête :

    Est-il possible de, au moment de l'insertion, de vérifier si un champ est correct, et sinon, de remplacer le caractère qui pose problème?

    Par exemple, j'ai un champ name, et il ne faut en aucun cas que dans ce nom, il n'y ai un _ ou un accent par exemple, et je voudrais faire mon trigger de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    BEGIN
    IF (NEW.name ilike "%\\_%") then
      SET NEW.name = REPLACE ( NEW.name , '_' , '-');
    END IF;
    END;
    mais cela me renvoie une erreur :

    Citation Envoyé par Erreur SQL
    ERROR: syntax error at or near "$1" at character 6
    Si quelqu'un connait une méthode, ou voit ce que je fais de mal ...
    Merci d'avance en tout cas

  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
    A priori ilike ne doit pas être un opérateur accepté par le language plpgsql, et par ailleurs les guillemets ne doivent pas être utilisés pour encadrer une chaine de caractères, il faut utiliser des apostrophes.

    Ce IF ne sert à rien de toute manière. La ligne suivante toute seule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NEW.name = REPLACE ( NEW.name , '_' , '-');
    fera aussi bien le job.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 12
    Par défaut
    Merci estofilo pour ta réponse, en fait ce qui est préférable c'est que je remonte une exception pour mes utilisateurs, du coup avec un simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IF NEW.ident ilike '%\\_%' THEN
                RAISE EXCEPTION 'L\'identifiant ne doit pas contenir de \'_\'';
    END IF
    ça marche très bien!

    Par contre deuxième petite question, savez vous si il existe, en pl/sql, une fonctions générique qui pourrait me permettre de remonter une exception aussi, mais pour tout les caractères spéciaux ? ( tous les accents, ç et autres bizarrerie des gens quoi :p )

    Merci d'avance en tout cas, et bonne journée

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 12
    Par défaut
    réponse à moi même si ça peut intéresser quelqu'un ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IF NEW.ident SIMILAR TO  '%[ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïñòóôõöùúûüýÿ]%' THEN
                  RAISE EXCEPTION 'L\'identifiant ne doit pas contenir d\'accents';
    END IF;
    Merci pour ceux qui on passé du temps à me lire

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

Discussions similaires

  1. Problème enchainement création trigger
    Par mafanta dans le forum SQL
    Réponses: 2
    Dernier message: 18/06/2012, 14h38
  2. Problème lors de création trigger
    Par Real_Kaz dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 22/09/2010, 15h47
  3. [PL/SQL] problème de trigger
    Par Chuck67 dans le forum Oracle
    Réponses: 14
    Dernier message: 09/12/2004, 23h17
  4. Problèmes création de procédures et de triggers
    Par missllyss dans le forum SQL
    Réponses: 2
    Dernier message: 06/11/2003, 10h42
  5. Problème création de DLL
    Par monsieur.voie.lactee dans le forum C++Builder
    Réponses: 4
    Dernier message: 12/08/2003, 16h56

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