#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 , который как разница в данных . В противном случае я не знаю ни одного решения для вызова процедуры.