Как включить отслеживание изменений для конкретной таблицы в PostgreSQL?

#postgresql #change-tracking

#postgresql #отслеживание изменений

Вопрос:

Можно ли включить отслеживание изменений для конкретной таблицы в PostgreSQL? Я знаю, что это можно легко сделать в MS SQL Server.

 ALTER TABLE Person.Contact  
ENABLE CHANGE_TRACKING  
WITH (TRACK_COLUMNS_UPDATED = ON)  
 

Есть ли у нас что-то подобное в PostgreSQL? Возможно ли добиться такого же поведения без создания триггеров? Я хочу отслеживать все операции DML для конкретной таблицы.

Комментарии:

1. вы устанавливаете set log_statement = 'mod' в postgresql.conf , но это отслеживает изменения во всех таблицах.

2. @richyen У нас также есть pg_last_commited_xact , который предоставляет значение, связанное с последней фиксацией, но мне нужно отслеживать изменения небольшого диапазона таблиц. В MS SQL Server у нас есть CHANGE_TRACKING_CURRENT_VERSION и CHANGE_TRACKING_MIN_VALID_VERSION . Я ищу аналогичную функцию в PostgreSQL.

3. Для этого нет встроенной функциональности. Самое близкое, что я могу придумать, это PGAudit . Смотрите Здесь [PGAudit] для документов.

4. @AdrianKlaver В MS SQL я использовал для копирования всех измененных данных, начиная с какой-то конкретной версии. Я имею в виду, что у меня есть старое CHANGE_TRACKING_CURRENT_VERSION значение, с которым я сравниваю CHANGE_TRACKING_MIN_VALID_VERSION . Если я понимаю, что данные не синхронизированы, я копирую их в другую базу данных. Какой это лучший аналог PostgreSQL? Не могли бы вы направить меня по следу?

5. Я не использовал этот Ankane , но он выполняет синхронизацию. Тогда есть SQL Workbench / J , который как разница в данных . В противном случае я не знаю ни одного решения для вызова процедуры.