Thread: triggers

triggers

From
"paul butler"
Date:
Dear list,
Just starting out with postgresql, I've got a 18 table db listing info
on organisations and on the main organisation table I've got an
update column (timestamp), to keep a record of the last time
information was updated for each organisation.
Obviously I can do it on the client app, but I think table /row
triggers might be a better solution
is there a straight forward way of, on updating any of the
organisation tables I can update the update column for that
organisation?

eg On update orgsubtable wher orgId = X
    trigger update orgMainTable.timestamp Values(now()) where
orgId = X

TIA

Paul Butler

Sorry about the previous post


Re: triggers

From
"Henshall, Stuart - WCP"
Date:
> From: paul butler [mailto:polb@cableinet.co.uk]
>
>
>
> Dear list,
> Just starting out with postgresql, I've got a 18 table db
> listing info
> on organisations and on the main organisation table I've got an
> update column (timestamp), to keep a record of the last time
> information was updated for each organisation.
> Obviously I can do it on the client app, but I think table /row
> triggers might be a better solution
> is there a straight forward way of, on updating any of the
> organisation tables I can update the update column for that
> organisation?
>
> eg On update orgsubtable wher orgId = X
>     trigger update orgMainTable.timestamp Values(now()) where
> orgId = X
>
> TIA
>
> Paul Butler
>
I'd probably use an update rule to do this:
CREATE RULE example_rl AS ON UPDATE TO orgsubtable DO
    UPDATE orgmaintable SET tmstmp=now() WHERE orgid=OLD.orgid;

if both tables had orgid. You'll notice I changed the field name from
timestamp. timestamp is a datatype and (IIRC) a reserved word.
There is more information on triggers and rules in the manual
Hope this helps,
- Stuart