On 06/08/2015 08:13 PM, Dmitry E. Oboukhov wrote:
> а можно пример триггера, а то я тут не понимаю вообще.
>
> есть табличка
>
> (
> 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;
CREATE TRIGGER tbl_inc_version BEFORE INSERT OR UPDATE ON tbl
FOR EACH ROW EXECUTE PROCEDURE incver();