From: | "Froggy / Froggy Corp(dot)" <froggy(at)froggycorp(dot)com> |
---|---|
To: | chetzacoalt(at)free(dot)fr |
Cc: | pgsql-fr-generale(at)postgresql(dot)org |
Subject: | Re: trigger sur update |
Date: | 2005-07-30 10:35:44 |
Message-ID: | 42EB5800.FB9E6C0@froggycorp.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-fr-generale |
Bonjour,
Je te renverrais bien à la doc qui l'explique tres bien ;)
Il y a deux manieres d'appeler un TRIGGER :
- BEFORE : Le trigger est exécuté avant la modification dans la table.
- AFTER : le trigger est exécuté apres modification de la table.
Concernant les variables NEW et OLD :
- La variable NEW contient les données que tu souhaites modifie dans le
cas d'un INSERT/UPDATE.
Par exemple pour un "INSERT INTO table (champ1, champ2) VALUES (1, 2);"
avec un trigger BEFORE INSERT, ta variable NEW va etre de la forme :
NEW.champ1 := 1;
NEW.champ2 := 2;
Si dans ton TRIGGER tu fais des modifications sur la variable NEW, PG
va automatiquement les appliques. Donc si tu modifies "NEW.champ2 :=
25", PG va execute "INSERT INTO table (champ1, champ2) VALUES (1, 25);".
- La variable OLD contient les anciennes données dans le cas d'un
UPDATE/DELETE.
Il n'y a que dans le cas de l'UPDATE que les variables NEW et OLD et
n'ont pas forcément les memes valeurs car tu peux faire un UPDATE dans
ton trigger, ce qui modifie les constantes.
En espérant avoir donné quelques réponses.
++
santiago wrote:
>
> bonjour
>
> je voudrais comprendre un peu mieux comment fonctionne un trigger dans
> le cas d'un update.
>
> ma question est : qui appelle le trigger ?
>
> ce que j'ai compris jusqu'a present, c'est que dans le cas de l'update,
> le trigger a a sa disposition, typiquement, new et old. Il fait ses
> calculs, puis rend une valeur. qui recupere cette valeur, et qu'en
> fait-il ? et en quoi cela varie-t-il si le trigger est appelle avant ou
> apres l'update (car dans les deux cas, on dispose des memes new et old
> je suppose) ?
>
> merci pour vos pistes et idees de tests sur le comportement
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo(at)postgresql(dot)org so that your
> message can get through to the mailing list cleanly
From | Date | Subject | |
---|---|---|---|
Next Message | michel vrand | 2005-07-31 07:30:18 | unsubscribe pgsql-fr-generale |
Previous Message | santiago | 2005-07-30 10:19:07 | trigger sur update |