Я должен отслеживать изменения записей в таблице. Я создал вторую таблицу, которая наследуется от первой и добавляет счетчик ревизий.
CREATE TABLE A (
id SERIAL,
foo TEXT,
PRIMARY KEY (id));
CREATE TABLE B (
revision INTEGER NOT NULL) INHERITS (A);
Затем я создал триггер, который будет обновлять таблицу B каждый раз, когда A вставляется / обновляется. Я не могу понять, как заставить B.revision сохранять индивидуальную «последовательность» для каждого идентификатора.
Пример: таблица A имеет 2 строки, i & j.
я был обновлен 3 раза и должен иметь 3 ревизии: (1, 2, 3).
j обновлялся 2 раза и должен иметь две ревизии: (1, 2).
Вот то, что у меня есть, возможно, я иду по неверному пути, и кто-то может мне помочь!
CREATE OR REPLACE FUNCTION table_update() RETURNS TRIGGER AS $table_update$
DECLARE
last_revision INTEGER;
BEGIN
SELECT INTO last_revision MAX(revision) FROM B WHERE id = NEW.id;
IF NOT FOUND THEN
last_revision := 0;
END IF;
INSERT INTO B SELECT NEW.*;
RETURN NEW;
END;
$table_update$ LANGUAGE plpgsql;
CREATE TRIGGER table_update
AFTER INSERT OR UPDATE ON A
FOR EACH ROW EXECUTE PROCEDURE table_update();