1

我有一个带有数据库的远程 Firebird 3.0 服务器。在这个数据库中,有一个大表。客户在工作期间经常查询此表。有太多的客户端和糟糕的互联网连接,所以这张桌子的工作很糟糕。我通过 IBExpert 将该表的本地副本复制到一个临时数据库中,该数据库与客户端应用程序一起分发。

但是现在需要更改此表中的某些值(添加新值并编辑一些旧值)。所以我需要某种同步 - 将远程修改表复制到客户端的本地数据库。

客户端应用程序是使用 Delphi Berlin 10.1 制作的。所以同步应该由Delphi代码完成。

你能给我一个想法吗,如何正确同步这么大的表?

4

1 回答 1

0

您可以在主数据库上触发 POST_EVENT(用于插入、更新、删除(触发器))以通知客户端应用程序有更改。

然后您的客户需要触发程序(在本地数据库上)进行同步。这可以通过EXECUTE STATEMENT ON EXTERNAL来完成

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

您应该在主数据库中包含插入/修改/删除的日期。

于 2018-11-19T08:46:09.300 回答