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 :

pb :RAISE EXCEPTION


Sujet :

PostgreSQL

  1. #1
    Membre régulier Avatar de Nimothenicefish
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 190
    Points : 103
    Points
    103
    Par défaut pb :RAISE EXCEPTION
    Bonjour,

    J'ai un petit problème avec un triggers pour dans un certains cas éviter d'inserer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    drop trigger if exists tr_funCompte on COMPTE;
    DROP function if exists funCompte(); 
    CREATE function funCompte() returns trigger
    as $$
    Begin
    	if new.solde < 100 Then
    		RAISE EXCEPTION 'L\insertion a échoué car le solde est inférieur à 100. Le solde --> %', new.solde;
    	End if;
    	return new;
    End;
    $$ language 'plpgsql';
     
    create trigger tr_funCompte before insert on COMPTE for each row execute procedure funCompte();
    Le trigger se lance avant l'insert sur compte, et dans la fonction si le nouveau solde du compte est inférieur à 100 alors raise exception. En principe ceci devrait empecher l'insert et afficher le message du raise exception. Sauf c'est comme s'il ne rentrait pas dans la fonction et que l'insert s'effectuait quand meme.

    Quelqu'un pourrait m'éclairer ?

    Merci à vous

    Cordialement, Nimo

  2. #2
    Membre à l'essai
    Profil pro
    Enseignant
    Inscrit en
    Décembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 28
    Points : 24
    Points
    24
    Par défaut
    je sais pas si ça peut t'aider mais voila comment j'ai procédé pour faire a peu près la même chose

    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
     
    CREATE FUNCTION verifier_montant () RETURNS TRIGGER AS '
        BEGIN
            IF NEW.montant_euro_utilisateur ISNULL THEN
                RAISE EXCEPTION ''Le montant euro ne peut pas avoir une valeur NULL'';
            END IF;
            IF NEW.montant_euro_utilisateur < 0 THEN
                RAISE EXCEPTION ''% ne peut pas avoir une valeur negative'', NEW.nom_utilisateur;
            END IF;
            RETURN NEW;
        END;
    ' LANGUAGE 'plpgsql';
     
    CREATE TRIGGER verifier_montant BEFORE INSERT OR UPDATE ON UTILISATEUR
        FOR EACH ROW EXECUTE PROCEDURE verifier_montant();

Discussions similaires

  1. conseil raise exception
    Par looping dans le forum Langage
    Réponses: 6
    Dernier message: 11/02/2014, 11h10
  2. [PDO] Catcher un raise exception
    Par spike75 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 28/04/2012, 21h46
  3. Récupérer un RAISE EXCEPTION
    Par spike75 dans le forum Requêtes
    Réponses: 2
    Dernier message: 24/04/2012, 15h42
  4. Opération de pointeur incorrecte au Raise d'une exception
    Par stanislas dans le forum Débuter
    Réponses: 5
    Dernier message: 24/06/2009, 11h11
  5. Raise Exception avec mysql ?
    Par pop_up dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 27/08/2007, 08h11

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