execa
Дата: 27.10.2015 18:08:28
Имеется таблица в чужой БД, назовем ее "namespace"."table", в нашу БД она прокинута, как прокинута неизвестно, скорее всего через алиасы. Известно что запрос select * from "namespace"."table" выполняется, т.е читать мы ее можем.
Вопрос, есть ли какие-нибудь возможности отследить, что в ней что изменилось (INSERT, URDATE, DELETE).
Триггер навесить не удается, так как их можно навешивать только на таблицы из неймспейса пользователя, соответственно к пользователю работающему с чужой таюлицей у нас доступа нет.
Пробовал создать VIEW для этой таблицы и работать с ней, но непонятно как отловить именно момент синхронизации вьюхи с таблицей.
Может у кого-нибудь есть какие мысли?
кит северных морей
Дата: 27.10.2015 18:34:54
execa,
view не хранит строк и не синхронизируется с таблицей. view - это (очень упрощенно) просто запрос, имеющий свое имя в БД и подставляющийся в ваши запросы при обращении к нему.
для конкретного ответа на ваш вопрос информации недостатчно. об общих подходах к решению подобных задач можете для начала почитать, например, в
wiki, и спроецировать на вашу ситуацию.
execa
Дата: 28.10.2015 10:00:48
Спасибо, задача очень близка моей. В данном направлении я и думал.
В принципе с OUTER JOIN в различных вариациях можно отследить все изменения.
По описанному в теме: я бы не стал завязываться на тайм-штампы, а делал бы ревизии. Благо моя ситуация мне это позволяет. Тогда временные коллизии пропадут сами себе. 10 ревизия - добавилось два поля, если что-то меняется в момент времени: попало в выборку при проверке обновлений - заедет в эту ревизию, нет - в следующую.