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

Поиск
Список
Период
Сортировка
От Pavel Stehule
Тема Re: Update columns in the same table in a deferred constraint trigger
Дата
Msg-id CAFj8pRBGLHFwp8Gur2VydJ3TmpXG=1yPs_qwMR0bnVf6O2CAuA@mail.gmail.com
обсуждение исходный текст
Ответ на Update columns in the same table in a deferred constraint trigger  (Andreas Joseph Krogh <andreas@visena.com>)
Ответы Re: Update columns in the same table in a deferred constraint trigger  (Andreas Joseph Krogh <andreas@visena.com>)
Список pgsql-sql
Hi


2014-07-29 11:52 GMT+02:00 Andreas Joseph Krogh <andreas@visena.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

Вложения

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

Предыдущее
От: Andreas Joseph Krogh
Дата:
Сообщение: Update columns in the same table in a deferred constraint trigger
Следующее
От: Andreas Joseph Krogh
Дата:
Сообщение: Re: Update columns in the same table in a deferred constraint trigger