PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

Tester l'insertion ou la modification dans un trigger

Technique - général | Tester l'insertion ou la modification dans un trigger

Par merylud le 28/02/2006 - 13:36

Salut,

J'ai un trigger déclenché sur l'evenement INSERT et UPDATE, le traitement associé est différent selon que l'on fasse une insertion ou une modification.

Le celèbre IF INSERTED ne fonctionnant pas, je me demande si quelqu'un à la reponse?

Je n'ai pas encore eu trop le temps de chercher dans la doc, donc si la reponse est évidente, veuillez m'en excuser....

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramètres" pour activer vos changements.

Bonjour Pour tester si un

Christophe Chauvet/ = 1 Mars, 2006 - 11:33

Bonjour

Pour tester si un trigger s'est déclenché sur un INSERT ou UPDATE, il faut faire un test sur TG_OP

comme ceci :

IF (TG_OP = 'DELETE') THEN
-- c'est une suppression
ELSIF (TG_OP = 'UPDATE') THEN
-- c'est une mise a jour
RETURN NEW;
ELSIF (TG_OP = 'INSERT') THEN
-- c'est une insertion
END IF;

Voir cette partie de la doc

Cordialement.

Christophe Chauvet
http://kryskool.org/


Super, merci beaucoup de ta r

merylud/ = 1 Mars, 2006 - 20:45

Super, merci beaucoup de ta reponse


Bonjour, j'ai réussi à cr

jackt81/ = 3 Mars, 2006 - 17:42

Bonjour,
j'ai réussi à créer un trigger avant update et delete pour 'auditer' la valeur modifiée dans une table. ça fonctionne bien :
CREATE OR REPLACE FUNCTION proc_update_actions()
RETURNS "trigger" AS
$BODY$

DECLARE

action_effectuee text;
valeur_initiale text;
valeur_modifiee text;

BEGIN

action_effectuee := TG_OP ;
IF action_effectuee = 'DELETE' THEN
SELECT INTO valeur_initiale OLD.lbaction FROM actions ;
INSERT INTO audit values
(now(), action_effectuee, valeur_initiale, NULL);
RETURN OLD;
ELSE
SELECT INTO valeur_initiale OLD.lbaction FROM actions ;
SELECT INTO valeur_modifiee NEW.lbaction FROM actions ;
INSERT INTO audit values
(now(), action_effectuee, valeur_initiale, valeur_modifiee);
RETURN NEW;
END IF;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;

j'aimerais connaitre aussi l'utilisateur qui a effectué la modif ou le delete.
existe-t-il un moyen de connaitre le user qui affectué l'action ?

Merci


pour savoir l'utilisateur qui

jarod_ab/ = 4 Mars, 2006 - 11:46

pour savoir l'utilisateur qui a effectué l'opération utilise la fonction user c'est à dire: nom_utilisateur = user ;


c'est parfait. merci beaucoup

jackt81/ = 6 Mars, 2006 - 12:04

c'est parfait. merci beaucoup


OK pas de pbm. bon courage

jarod_ab/ = 8 Mars, 2006 - 16:40

OK pas de pbm. bon courage


© PostgreSQLFr, tous droits réservés.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.