Лучшие практики отслеживания истории данных

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

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

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);

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

Другие вопросы по тегам