【发布时间】:2017-10-31 04:34:19
【问题描述】:
我正在构建一个应用程序,它在查找数据库 (oracle) 后进行一些处理。
目前,我已使用 Spring Integration 配置应用程序,它会定期轮询数据,无论是否更新或插入任何数据。
这里的问题是,我无法添加或使用任何列来区分新旧记录。此外,对于表中没有插入或更新,轮询器从数据库中轮询数据并将数据馈送到消息通道中。
为此,我想切换到数据库更改通知,我需要注册类似的查询
SELECT * FROM EMPLOYEE WHERE STATUS='ACTIVE'
现在这个活动状态对于新旧条目都是正确的,我想从我的列表中删除旧条目。因此,只有在新插入或现有更新之后,我才想获取新添加或最近更新的数据。
【问题讨论】:
-
您能否将一列作为 lastupdatedatetime 然后查询该列,每当您轮询所有 lastupdatedatetime 大于 lasttime 的记录时,代码都会进行轮询。此逻辑将仅返回最后一个窗口插入或更新的记录。此外,我建议在您的表中使用版本号或标志,每当插入/更新任何记录时,增加该版本号或将版本标志设为真,并将旧版本的记录设为假。
-
谢谢阿米特,但正如我所说,我不能在表格中添加任何额外的列,以便我可以用这种直接的方式识别,我的问题是,还有其他方法吗?
标签: java database jdbc spring-integration