Re: Re: [pgsql-ru-general] Номер правки записи - Mailing list pgsql-ru-general

From Dmitry E. Oboukhov
Subject Re: Re: [pgsql-ru-general] Номер правки записи
Date
Msg-id 20150608192323.GX19139@vdsl.uvw.ru
Whole thread Raw
In response to Re: Re: [pgsql-ru-general] Номер правки записи  (Andrey Oktyabrskiy <ano@bestmx.net>)
List pgsql-ru-general
>> а можно пример триггера, а то я тут не понимаю вообще.
>>
>> есть табличка
>>
>> (
>>      id: SERIAL,
>>      field: TEXT,
>>      version: INTEGER
>> )
>>
>> Нужно написать триггер который будет на каждый
>>
>> UPDATE table SET field = 'bla' WHERE id = 123;
>>
>> делать инкремент version попутно.
> CREATE OR REPLACE FUNCTION incver () RETURNS TRIGGER AS $$
> BEGIN
> IF TG_OP = 'INSERT' THEN
> new.version := 1;
> ELSIF TG_OP = 'UPDATE' THEN
> new.version := old.version + 1;
> END IF;
> RETURN new;
> END;
> $$ LANGUAGE plpgsql;

а допустимо разве менять переменные внутри NEW?
ухты, я в этом направлении ничего не знал даже.

пошел читать документацию...

> CREATE TRIGGER tbl_inc_version BEFORE INSERT OR UPDATE ON tbl
> FOR EACH ROW EXECUTE PROCEDURE incver();

--

. ''`.                               Dmitry E. Oboukhov
: :’  :   email: unera@debian.org jabber://UNera@uvw.ru
`. `~’              GPGKey: 1024D / F8E26537 2006-11-21
  `- 1B23 D4F8 8EC0 D902 0555  E438 AB8C 00CF F8E2 6537

Attachment

pgsql-ru-general by date:

Previous
From: Andrey Oktyabrskiy
Date:
Subject: Re: Re: [pgsql-ru-general] Номер правки записи
Next
From: "Dmitry E. Oboukhov"
Date:
Subject: Тюнинг БД