On Mon, Sep 7, 2009 at 6:53 AM, Itagaki
Takahiro<itagaki.takah...@oss.ntt.co.jp> wrote:
>
> Peter Eisentraut <pete...@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

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to