Update columns in the same table in a deferred constraint trigger

Поиск
Список
Период
Сортировка
От Andreas Joseph Krogh
Тема Update columns in the same table in a deferred constraint trigger
Дата
Msg-id VisenaEmail.39.362cb9f24c93a770.14781853e94@tc7-on
обсуждение исходный текст
Ответы Re: Update columns in the same table in a deferred constraint trigger  (Pavel Stehule <pavel.stehule@gmail.com>)
Список 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
Вложения

В списке pgsql-sql по дате отправления:

Предыдущее
От: Vinayak Pokale
Дата:
Сообщение: Re: PGsql function timestamp issue
Следующее
От: Pavel Stehule
Дата:
Сообщение: Re: Update columns in the same table in a deferred constraint trigger