Re: Update columns in the same table in a deferred constraint trigger

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: Andreas Joseph Krogh <andreas(at)visena(dot)com>
Cc: postgres list <pgsql-sql(at)postgresql(dot)org>
Subject: Re: Update columns in the same table in a deferred constraint trigger
Date: 2014-07-29 09:56:17
Message-ID: CAFj8pRBGLHFwp8Gur2VydJ3TmpXG=1yPs_qwMR0bnVf6O2CAuA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Hi

2014-07-29 11:52 GMT+02:00 Andreas Joseph Krogh <andreas(at)visena(dot)com>:

> Hi all.
>
> I have this simple schema:
>
> create table fisk(
> name varchar primary key,
> autofisk varchar
> );
>
> I want to update the column "autofisk" on commit based the value of
> "name", so I created this trigger:
>
> CREATE OR REPLACE FUNCTION fisk_tf() returns TRIGGER AS $$
> BEGIN
> raise notice 'name %', NEW.name;
> NEW.autofisk = NEW.name || CURRENT_TIMESTAMP::text;
> RETURN NEW;
> END;
> $$ LANGUAGE plpgsql;
>
> CREATE CONSTRAINT TRIGGER fisk_t AFTER INSERT OR UPDATE ON fisk DEFERRABLE
> INITIALLY DEFERRED
>

It should be BEFORE INSERT OR UPDATE trigger

Regards

Pavel

> FOR EACH ROW EXECUTE PROCEDURE fisk_tf();
>
> The problem is that "autofisk" is never populated:
> andreak=# begin;
> BEGIN
> andreak=# insert into fisk(name) values ('a');
> INSERT 0 1
> andreak=# commit;
> NOTICE: name a
> COMMIT
> andreak=# table fisk;
> name | autofisk
> ------+----------
> a |
> (1 row)
>
> Is it possible to do what I want, namely to update a column in a table in
> an AFTER INSERT OR UPDATE constraint trigger on the same table?
>
> Thanks.
>
> --
> *Andreas Joseph Krogh*
> CTO / Partner - Visena AS
> Mobile: +47 909 56 963
> andreas(at)visena(dot)com
> www.visena.com
> <https://www.visena.com>
>

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Andreas Joseph Krogh 2014-07-29 09:59:09 Re: Update columns in the same table in a deferred constraint trigger
Previous Message Andreas Joseph Krogh 2014-07-29 09:52:12 Update columns in the same table in a deferred constraint trigger