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

From: "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org>
To: Andrey Oktyabrskiy <ano(at)bestmx(dot)net>
Cc: pgsql-ru-general(at)postgresql(dot)org
Subject: Re: Re: [pgsql-ru-general] Номер правки записи
Date: 2015-06-08 19:23:23
Message-ID: 20150608192323.GX19139@vdsl.uvw.ru
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: 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(at)debian(dot)org jabber://UNera(at)uvw(dot)ru
`. `~’ GPGKey: 1024D / F8E26537 2006-11-21
`- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537

In response to

Browse pgsql-ru-general by date

  From Date Subject
Next Message Dmitry E. Oboukhov 2015-06-13 09:05:28 Тюнинг БД
Previous Message Andrey Oktyabrskiy 2015-06-08 17:42:19 Re: Re: [pgsql-ru-general] Номер правки записи