【发布时间】:2014-03-24 07:57:37
【问题描述】:
我有一个 bash 脚本,每 5 分钟运行一次 Java 应用程序。 Java 应用程序从Oracle 数据库中的满足特定条件的表中获取记录。
我必须对Resultset 中返回的每条记录进行多次验证,如果当前记录通过验证,我将在ArrayList 中添加特定记录。
最后,当所有记录都经过验证后,对这些记录进行批量更新。
问题在于验证需要时间,并且到那时会添加新记录。 因此,有时前一个脚本尚未完成执行,而第二个脚本正在运行。我想要的是锁定当前未更新的记录,以便另一个脚本不会从数据库中获取它们。
我能想到的最好的办法是在表中添加一个状态列。
- 状态 0 - 应用程序尚未处理
- 状态 1 - 处理中
- 状态 2 - 已处理
Java 应用程序将获取状态为 0 的记录,将它们设置为 1,然后执行验证。最后经过验证(成功与否),状态设置为 2。
你能想出一个更好的选择吗,因为它看起来有点“笨拙”。
【问题讨论】: