应用程序在一定时间间隔后轮询数据库。在每次轮询时,应用程序将读取所有表。
作为优化的一部分,我们希望应用程序只有在发生任何INSERT / UPDATE / DELETE时才应读取表。所以我想使用时间戳概念。
有一个单独的时间戳列可以帮助我跟踪任何行修改。
在查询表时,我可以检查内存中存储的时间戳是否小于表中的max-of-TimeStamp。如果是,则表示某些行已被修改。
但是如果某一行被删除,那么与该行相关的最新时间戳就不再有了。因此,在这种情况下上述算法失败,因为最大时间戳没有给出正确的值。
有没有一种方法可以在不使用触发器的情况下跟踪删除操作?
任何帮助都将受到高度赞赏。 我正在使用Sybase ASA数据库。
答案 0 :(得分:1)
也许你可以实现逻辑删除。您可以使用特定标志将其标记为已删除,而不是删除记录。
您仍然拥有最大时间戳,您可以从选择查询中排除已标记的记录(可能会在表格顶部创建一些视图以自动执行此操作)。