Рекомендации по отслеживанию истории данных

нам нужно отслеживать изменение данных во время на некоторой таблице. Нам нужен совет о том, как выполнить эту задачу. У нас есть две улицы, чтобы следовать в нашем уме. 1) Создайте таблицу со следующими записями: идентификатор пользователя, изменение даты, имя таблицы, имя поля, тип поля, значение поля. Таким образом, мы будем отслеживать с помощью триггера.

2) Добавьте поле состояния во все таблицы, которые нам нужны для отслеживания истории, под названием «Статус». Это поле будет иметь следующие значения: I = добавлено - D = удалено - M = изменено с относительной датой модификации. Таким образом, мы всегда можем знать последнюю действительную строку и все предыдущие модификации данных. 3) Это у вас на уме  Что вы предлагаете?


person AngeloBad    schedule 12.07.2011    source источник


Ответы (1)


Я делал это несколько раз в PostgreSQL, используя отдельную схему «истории» и триггеры.

Таблицы в схеме «история» идентичны реальным таблицам, но с добавленными history_id PK и отметкой времени события. Таблицы из схемы "история" не имеют никаких ограничений. Также вам нужно создать поле для действий, если вам нужно также отслеживать удаление.

В postgreSQL вы можете легко создать такую ​​таблицу, используя такой оператор CREATE:

CREATE TABLE history.tbl AS
  (history_id BIGSERIAL PRIMARY KEY, 
  event_time TIMESTAMP DEFAULT NOW(), 
  action CHAR(1), 
  LIKE public.tpl);

После этого вы должны создать триггер, который будет вставлять в таблицу истории при вставке, обновлении, удалении.

person Gedrox    schedule 12.07.2011