Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/06/2008, 10h32   #1
Membre du Club
 
Avatar de Nimothenicefish
 
Étudiant
Inscription : janvier 2008
Messages : 184
Détails du profil
Informations personnelles :
Âge : 26

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2008
Messages : 184
Points : 66
Points : 66
Envoyer un message via MSN à Nimothenicefish Envoyer un message via Skype™ à Nimothenicefish
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 :
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
Nimothenicefish est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2008, 16h59   #2
Candidat au titre de Membre du Club
 
Enseignant
Inscription : décembre 2007
Messages : 28
Détails du profil
Informations personnelles :
Âge : 24

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : décembre 2007
Messages : 28
Points : 13
Points : 13
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 :
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();
Virtuosity est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h09.


 
 
 
 
Partenaires

Hébergement Web