Re: Triggers on columns - Mailing list pgsql-hackers

From Robert Haas
Subject Re: Triggers on columns
Date
Msg-id 603c8f070909081422t7cd4f9cet9c2ef4662472be46@mail.gmail.com
Whole thread Raw
In response to Re: Triggers on columns  (Itagaki Takahiro <itagaki.takahiro@oss.ntt.co.jp>)
List pgsql-hackers
On Mon, Sep 7, 2009 at 6:53 AM, Itagaki
Takahiro<itagaki.takahiro@oss.ntt.co.jp> wrote:
>
> Peter Eisentraut <peter_e@gmx.net> wrote:
>
>> Therefore, it cannot be completely unexpected if column triggers are
>> called even if the column was not actually changed in a semantically
>> significant way.
>
> Ok, the attached patch implements standard-compliant version of
> column trigger.
>
> Retrieving modified columns is not so difficult as I expected.
> It is in:
>  rt_fetch(relinfo->ri_RangeTableIndex, estate->es_range_table)->modifiedCols
> and the information are passed from caller to trigger routines.
>
>
> However, to be honest, I think standard-compliant column trigger is
> useless... I'm thinking additional extension for triggers -- if we
> want to check modifications of actual values, it could be defined as:
>
>    CREATE TRIGGER trig BEFORE UPDATE ON tbl FOR EACH ROW
>        WHEN (NEW.col <> OLD.col) EXECUTE PROCEDURE trigger_func();

It might be better to use WHERE than WHEN.  Unfortunately this still
has all the wordiness of doing it in the trigger function.  How about
some more trivial syntax modification, like:

CREATE TRIGGER name      BEFORE UPDATE MODIFYING col1, col12, ...      ON tbl FOR EACH ROW EXECUTE PROCEDURE func();

...Robert


pgsql-hackers by date:

Previous
From: James Pye
Date:
Subject: Re: Triggers on columns
Next
From: Robert Creager
Date:
Subject: Any interest in buildfarm a member using Apple's llvm-gcc-4.2 or clang?