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