| 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
| 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] Номер правки записи |