PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 24/04/2014 19:00:38

tatou
Membre

procédures stockées , trigger table temporaires

Bonjour,

Je dois utiliser les procédures stockées pour effectuer des transformations sur des données des tables temporaires afin de les stocker dans des tables qui seront persisté es par une application web ,
autre chose il me faut que après chaque insertion dans la table temporaire les données doivent suprimées pour laisser de place pour les nouvelles données
Ma question comment je dois le faire via un trigger after event insert et appliquer les changement sur les données via l'appel d'une procédure stockée
j'arrive pas à le faire

comme initiative je fais ça comme code :

REATE TABLE public.emp (
   
    salaire integer,
    date_dermodif timestamp,
    utilisateur_dermodif text
);

CREATE TABLE brut.emp (
   
    salaire integer,
    date_dermodif timestamp,
    utilisateur_dermodif text
);

CREATE FUNCTION emp_stamp() RETURNS trigger AS $emp_stamp$

    BEGIN
   
            INSERT INTO public.emp
 
           SELECT  *  from  brut.emp ;
           
           return NULL;
       
    END;
   
$emp_stamp$ LANGUAGE plpgsql;

CREATE TRIGGER emp_stamp AFTER  INSERT ON brut.emp
    FOR EACH ROW EXECUTE PROCEDURE emp_stamp();
mais il m'affiche un erreur que pas de return sad

merci beaucoup pour votre aide appréciée

Hors ligne

#2 24/04/2014 22:13:48

gleu
Administrateur

Re : procédures stockées , trigger table temporaires

Quel est le message d'erreur exact ? (parce qu'il y a de manière évidente un RETURN).


Guillaume.

Hors ligne

#3 25/04/2014 10:21:56

tatou
Membre

Re : procédures stockées , trigger table temporaires

Bonjour gleu,

merci pour ta réponse voici l'erreur:

ERREUR:  le contrôle a atteint la fin de la procédure trigger sans RETURN
CONTEXT:  fonction PL/pgsql emp_stamp()

********** Erreur **********

ERREUR: le contrôle a atteint la fin de la procédure trigger sans RETURN
État SQL :2F005
Contexte : fonction PL/pgsql emp_stamp()

Hors ligne

#4 25/04/2014 12:04:15

gleu
Administrateur

Re : procédures stockées , trigger table temporaires

Ça fonctionne pour moi :

postgres=# insert into brut.emp values (10000, now(), 'pouet');
INSERT 0 1
postgres=# select * from public.emp;
 salaire |       date_dermodif        | utilisateur_dermodif 
---------+----------------------------+----------------------
   10000 | 2014-04-25 12:03:17.837779 | pouet
(1 row)

(base vierge, ajout du schéma brut avant)


Guillaume.

Hors ligne

#5 25/04/2014 12:21:41

tatou
Membre

Re : procédures stockées , trigger table temporaires

merci bcp gleu ça marche smile
une autre question si je veux faires des traitements sur les colonnes avant de populer la table public.emp

je définis une fonction exple convert_time()
et dans la fonction trigger je dois l'appeler ?

merci pour ton aide appréciée

Hors ligne

#6 25/04/2014 16:17:09

gleu
Administrateur

Re : procédures stockées , trigger table temporaires

Oui. Par contre, les types de données et les contraintes sont vérifiées avant. Donc impossible d'ajouter une donnée qui ne respecte pas une contrainte et utiliser le trigger pour les faire respecter.


Guillaume.

Hors ligne

#7 25/04/2014 16:21:57

tatou
Membre

Re : procédures stockées , trigger table temporaires

merci gleu pour ton aide
tu peux me donner un tutorial comment le faire j'ai cherché sur google mais j'arrive pas à le faire

Hors ligne

Pied de page des forums