0

应用程序在特定时间间隔后轮询数据库。在每次轮询时,应用程序将读取所有表。

作为优化的一部分,我们希望应用程序仅在发生任何 INSERT/UPDATE/DELETE 时才读取表。所以我想使用时间戳概念。

拥有一个单独的时间戳列可以帮助我跟踪任何行修改。

在查询表时,我可以检查内存中存储的时间戳是否小于表中的 max-of-TimeStamp。如果是,则表示某行已被修改。

但是如果某行被删除,那么与该行关联的最新时间戳就不再存在了。因此,上述算法在这种情况下失败,因为最大时间戳没有给出正确的值。

有没有一种方法可以在不使用触发器的情况下跟踪删除操作?

任何帮助将不胜感激。我正在使用 Sybase ASA 数据库。

4

1 回答 1

1

也许您可以实现逻辑删除。例如,您只需使用特定标志将其标记为已删除,而不是删除记录。

您仍然拥有最大时间戳,并且可以从选择查询中排除标记的记录(也许在表顶部创建一些视图以自动完成工作)。

于 2011-02-22T07:43:46.350 回答