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 :

Passer une valeur a un trigger ?


Sujet :

PostgreSQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 8
    Points : 11
    Points
    11
    Par défaut Passer une valeur a un trigger ?
    Je souhaiterai passer un argument a un trigger afin que celui-ci le passe a la fonction qu'il appelera... je m'explique

    J'ai une table
    livre(...,...,editeur,...) et une table editeur(nom_editeur,...)

    Je souhaite lorsque j'ajoute un livre, verifier si "livre.editeur" existe dans la table editeur et sinon l'ajouter...

    j'ai fait la fonction suivante afin de faire le travail :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE FUNCTION maj_editeurs() RETURNS TRIGGER AS
    '
    	DECLARE
    		exist integer;
    	BEGIN
    		SELECT INTO exist COUNT(editeurs) FROM editeurs WHERE nom_editeur="TG_ARGV[0]";
    		IF exist ISNULL THEN
    			INSERT INTO editeurs(nom_editeur) VALUES("TG_ARGV[0]");
    		END IF;
    	END;
    '
    LANGUAGE 'plpgsql';
    Et j'ai fait ce Trigger afin d'appeler la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE TRIGGER livres_editeurs AFTER INSERT 
    	ON livre FOR EACH STATEMENT
    	EXECUTE PROCEDURE maj_editeurs()
    Mon probleme est que je souhaite appeler la fonction avec un argument
    qui serait le nom de l'éditeur (livre.editeur), mais pour cela je dois recupere ce nom dans le trigger... Comment faire ?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 8
    Points : 11
    Points
    11
    Par défaut
    Bon ben je vous fais la réponse aussi ...

    Il faut utiliser NEW :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE FUNCTION maj_editeurs() RETURNS TRIGGER AS
    '
    	DECLARE
    		exist integer;
    	BEGIN
    		SELECT INTO exist COUNT(editeurs) FROM editeurs WHERE nom_editeur=NEW.editeur;
    		IF exist ISNULL THEN
    			INSERT INTO editeurs(nom_editeur) VALUES(NEW.editeur);
    		END IF;
    	END;
            RETURN NEW
    '
    LANGUAGE 'plpgsql';
    pti lien pratique :
    http://www.postgresql.org/docs/8.0/s...l-trigger.html

  3. #3
    Membre émérite
    Avatar de hpalpha
    Inscrit en
    Mars 2002
    Messages
    769
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 769
    Points : 2 545
    Points
    2 545
    Par défaut
    Juste une question, ce ne serait pas plutot FOR EACH ROW ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE TRIGGER livres_editeurs AFTER INSERT 
    	ON livre FOR EACH ROW
    	EXECUTE PROCEDURE maj_editeurs()
    Delphi 2009 - ZeosLib - DevExpress - TMS - PgDAC
    PostgreSQL 8.4 sous Debian
    Sites : http://postgresql.developpez.com http://dgriessinger.developpez.com

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

Discussions similaires

  1. [VB.NET] Passer une valeur de control entre deux form
    Par TheMacleod dans le forum Windows Forms
    Réponses: 5
    Dernier message: 27/12/2005, 11h07
  2. passer une valeur à la fenêtre parent
    Par Hinomura Yo dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 20/10/2005, 15h38
  3. [PHP-JS] Javascript et PHP: passer une valeur en paramètres
    Par anutka dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/10/2005, 12h05
  4. Passer une valeur Null dans un argument de procédure
    Par preempalver dans le forum VBA Access
    Réponses: 5
    Dernier message: 30/12/2003, 20h52

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