Re: En cas d'update réaliser un insert dans une autre table

Lists: pgsql-fr-generale
From: BPascal <pascal62fr(at)free(dot)fr>
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: En cas d'update réaliser un insert dans une autre table
Date: 2008-12-12 09:26:57
Message-ID: 49422E61.3010305@free.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: Postg배트맨 토토SQL : Postg배트맨

Bonjour,

Comment faire, en cas d'update dans une table via PHP, pour réaliser un
insert automatiquement dans une autre table via postgresql.

C'est une question qui doit fréquente, je cherche dans la documentation,
trigger/postgresql je suppose.

Si vous connaissez une documentation, un exemple, ...

Comme ma question est assez général je donne un exemple simplifié

Soit la table Etablissement, quand Etablissement.Nom change alors je
renseigne date.maj et je veux créer un enregistrement dans Historique

Table Etablissement
IdEtablissement
Nom
Date_maj

Table Historique
Idhistorique
IdEtablissement
Nom
Date_historique

Je peux le faire en PHP, mais je souhaite faire faire ce travail par
postgresql. Je suppose que c'est possible via "trigger" mais je n'ai
jamais utilisé ce genre de chose.
Je cherche un exemple simple à imiter.

A+
--
Pascal


From: Marc Cousin <mcousin(at)sigma(dot)fr>
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: En cas d'update réaliser un insert dans une autre table
Date: 2008-12-12 09:47:37
Message-ID: 200812121047.37849.mcousin@sigma.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: Postg토토 사이트SQL : Postg토토

Le Friday 12 December 2008 10:26:57 BPascal, vous avez écrit :
> Bonjour,
>
>
> Comment faire, en cas d'update dans une table via PHP, pour réaliser un
> insert automatiquement dans une autre table via postgresql.
>
> C'est une question qui doit fréquente, je cherche dans la documentation,
> trigger/postgresql je suppose.
>
> Si vous connaissez une documentation, un exemple, ...
>
>
> Comme ma question est assez général je donne un exemple simplifié
>
> Soit la table Etablissement, quand Etablissement.Nom change alors je
> renseigne date.maj et je veux créer un enregistrement dans Historique
>
> Table Etablissement
> IdEtablissement
> Nom
> Date_maj
>
>
>
> Table Historique
> Idhistorique
> IdEtablissement
> Nom
> Date_historique
>
>
> Je peux le faire en PHP, mais je souhaite faire faire ce travail par
> postgresql. Je suppose que c'est possible via "trigger" mais je n'ai
> jamais utilisé ce genre de chose.
> Je cherche un exemple simple à imiter.
>
> A+
> --
> Pascal

Pour commencer, dans la doc postgresql, ce qui concerne la question, c'est les
chapitres 35 et 38 (si tu veux faire ton trigger en plpgsql, ce qui me semble
un bon début).

Sinon j'ai un exemple quick n dirty pour te mettre le pied à l'étrier (c'est
un trigger sur insertion, pas sur update, mais cela revient à peu de choses
près au même):

Creation de la fonction:

CREATE OR REPLACE FUNCTION logs_stat_virus()
RETURNS trigger AS
$BODY$BEGIN
if new.evenement = 'V' THEN
insert into stat_virus VALUES (new.date, new.info_sup);
END IF;
if new.evenement = 'A' THEN
insert into stat_spam VALUES (new.date);
END IF;
return new;
END$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;

Declaration du trigger :

CREATE TRIGGER trigger_virus
BEFORE INSERT
ON logs
FOR EACH ROW
EXECUTE PROCEDURE logs_stat_virus();


From: stephane <stephane+pgfr(at)bpf(dot)st>
To: BPascal <pascal62fr(at)free(dot)fr>
Cc: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: En cas d'update réaliser un insert dans une autre table
Date: 2008-12-12 13:13:49
Message-ID: 20081212141349.62c63adc@Lutetium
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

Le Fri, 12 Dec 2008 10:26:57 +0100,
BPascal <pascal62fr(at)free(dot)fr> a écrit :

> Bonjour,
>
>
> Comment faire, en cas d'update dans une table via PHP, pour réaliser
> un insert automatiquement dans une autre table via postgresql.
>
> C'est une question qui doit fréquente, je cherche dans la
> documentation, trigger/postgresql je suppose.
>
> Si vous connaissez une documentation, un exemple, ...
>

Un petit exemple:
http://stephane.bpf.st/si/bdd/pg/lastupdate
(...)
Stéphane.


From: Dimitri Fontaine <dfontaine(at)hi-media(dot)com>
To: BPascal <pascal62fr(at)free(dot)fr>
Cc: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: En cas d'update réaliser un insert dans une autre table
Date: 2008-12-12 13:38:28
Message-ID: 9B32659C-B25A-4385-A4EC-17D6D53F109D@hi-media.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-fr-generale

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Le 12 déc. 08 à 10:26, BPascal a écrit :
> Comment faire, en cas d'update dans une table via PHP, pour réaliser
> un insert automatiquement dans une autre table via postgresql.

Regarde le projet tablelog :
http://pgfoundry.org/projects/tablelog/

- --
dim

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Darwin)

iEYEARECAAYFAklCaVUACgkQlBXRlnbh1bmTswCgmcyaBwq5Cp40Fpp+Td8wErWZ
oQsAnAuWFXwtNfD2hBEN4rLCOBP8oB8G
=k54H
-----END PGP SIGNATURE-----