我有一个进程,使用SELECT where
delete = 'Y'
找到要删除的文件列表。
我将此过程设置为前一天运行,但需要一段时间,因为它实际上也会删除文件。
在长时间操作过程中,我正在使用该应用程序并删除了另一个文件。
此时我意识到我不知道该文件是否会被删除,因为我不知道SELECT是否会在开始时找到所有文件,或者它是否逐步找到它们并且会到达我最近删除的文件。
答案 0 :(得分:1)
这取决于SELECT语句的执行时间,以及应用程序的编写方式(如果使用ORM等),但我怀疑以下分析可能有效。
如果您的代码如下:
<prepare query>
<execute query>
for each row in <query_result_cursor>
<delete file>
选择将获取它的所有行,如果稍后更新行以使Delete ='Y',则它将不会拾取它。
关键是确定何时发生<execute query>
,以及何时与您的删除相关。如果在使用您的应用删除文件之前发生<execute query>
,则会在您的流程中获取该文件。如果<execute query>
之后发生,它就不会捡起来。
简短回答:一下子就会发生。