Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#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
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
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
Pages : 1