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>
>
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 |