Копирование удаленной таблицы Firebird в локальную базу данных - PullRequest
0 голосов
/ 17 ноября 2018

У меня есть удаленный сервер Firebird 3.0 с базой данных. В этой базе данных есть большая таблица. Клиент очень часто запрашивает эту таблицу во время своей работы. Слишком много клиентов и плохое интернет-соединение, поэтому работа с этим столом ужасна. Я сделал локальную копию этой таблицы через IBExpert во временную базу данных, которая распространяется вместе с клиентским приложением.

Но теперь необходимо изменить некоторые значения в этой таблице (добавить новые значения и отредактировать некоторые старые). Поэтому мне нужна какая-то синхронизация - копирование удаленной модифицированной таблицы в локальную базу данных клиента.

Клиентское приложение было сделано с использованием Delphi Berlin 10.1. Поэтому синхронизация должна выполняться с помощью кода Delphi.

Подскажите, пожалуйста, как правильно будет синхронизировать такую ​​большую таблицу, пожалуйста?

1 Ответ

0 голосов
/ 19 ноября 2018

Вы можете запустить POST_EVENT в основной базе данных (для вставки, обновления, удаления (триггеры)), чтобы уведомить клиентские приложения об изменениях.

Тогда ваш клиент должен будет запустить процедуру (в локальной БД) длясделать синхронизацию.Это может быть сделано с помощью ВЫПОЛНИТЬ ЗАЯВЛЕНИЕ НА ВНЕШНЕМ

  FOR EXECUTE STATEMENT ('SELECT ... WHERE CURRENT_TIMESTAMP >= tablename.modifiedon')
  ON EXTERNAL 'SERVER/PORT:DBPATH'

Вы должны включить дату вставки / изменения / удаления в основную БД.

...