Re: update in rule - Mailing list pgsql-admin

From Stephan Szabo
Subject Re: update in rule
Date
Msg-id Pine.BSF.4.21.0110171159030.23020-100000@megazone23.bigpanda.com
Whole thread Raw
In response to update in rule  (Nicolas KOWALSKI <Nicolas.Kowalski@imag.fr>)
Responses Re: update in rule  (Dmitry Morozovsky <marck@rinet.ru>)
Re: update in rule  (Radoslaw Stachowiak <radek@alter.pl>)
List pgsql-admin
On Wed, 17 Oct 2001, Nicolas KOWALSKI wrote:

> <base>=# \d adresses
>                                  Table "adresses"
>   Attribute   |          Type          |                 Modifier
>
> --------------+------------------------+----------------------------------------
>  id           | integer                | default nextval('adresses_id_seq'::text)
> <snip>
>  date_maj     | date                   | default 'NOW'
> Index: adresses_pkey
>
>
> I would like to automatically update the `date_maj' field with the
> current day date whenever an update on a row occurs.
>
> So I created a rule like :
>
> CREATE RULE adresses_date_maj
> AS ON UPDATE TO adresses
> DO UPDATE adresses SET date_maj = 'NOW' ;
>
>
> But as says the documentation, this does not work (circular problem).
>
> Does anyone known how to achieve such a behaviour ?

Use a trigger instead, something like

create function adresses_trigger() returns opaque as '
begin
 NEW.date_maj := now();
 return NEW;
end;' language 'plpgsql';
create trigger tr before update on adresses for each row execute
 procedure adresses_trigger();



pgsql-admin by date:

Previous
From: Stefan Huber
Date:
Subject: Re: PG on Suse
Next
From: Allan Engelhardt
Date:
Subject: Re: Automatically starting postmaster after system crash