我发现这篇关于同步的文章:
http://www.databasejournal.com/features/sybase/article.php/3769756/The-Missing-Sync.htm
它没有涉及技术细节,但您可以猜测哪种编码将实施此策略。
我的服务器也没有花哨的通知,所以我需要同步策略。
例如,我的 modelLocator 中有一个公司列表。它并没有经常改变,它还不足以考虑分页,我不想在每个用户操作上重新加载它(removeAll()),但我不希望我的应用程序崩溃或更新损坏的数据如果它已从应用程序的另一个实例更新或删除。
我现在所做的是将 SELECT 日期时间保存在 SESSION 中。当我回来刷新数据时,我 SELECT WHERE last_modified>$SESSION['lastLoad']
这样我在加载数据后只修改了行(大部分时间为 0 行)。
显然,您需要在每个 INSERT 和 UPDATE 上更新 last_modified。
对于 DELETE,它更棘手。正如那家伙在他的文章中指出的那样:“我们怎样才能发送一个不再存在的记录”
你需要告诉 flex 它应该删除哪个项目(比如通过 ID),这样你就不能真正在 DELETE 上删除 :)
当用户删除公司时,您改为执行更新:deleted=1 然后在刷新公司时,对于已删除=1 的行,您只需将 ID 发送回 flex 以确保该公司不再在模型中。
最后但并非最不重要的一点是,您需要编写一个函数来清除已删除=1 和 last_modified 早于 ... 3days 或您认为适合您需要的任何行。
好消息是,如果用户错误地删除了一行,它仍在数据库中,您可以在 3 天内将其从真正的删除中保存。