Update columns in the same table in a deferred constraint trigger - Mailing list pgsql-sql

From Andreas Joseph Krogh
Subject Update columns in the same table in a deferred constraint trigger
Date
Msg-id VisenaEmail.39.362cb9f24c93a770.14781853e94@tc7-on
Whole thread Raw
Responses Re: Update columns in the same table in a deferred constraint trigger
List pgsql-sql
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
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
Attachment

pgsql-sql by date:

Previous
From: Vinayak Pokale
Date:
Subject: Re: PGsql function timestamp issue
Next
From: Pavel Stehule
Date:
Subject: Re: Update columns in the same table in a deferred constraint trigger