SELECT是一次性发生还是逐步发生

时间:2010-05-28 00:08:07

标签: mysql select

我有一个进程,使用SELECT where delete = 'Y'找到要删除的文件列表。

我将此过程设置为前一天运行,但需要一段时间,因为它实际上也会删除文件。

在长时间操作过程中,我正在使用该应用程序并删除了另一个文件。

此时我意识到我不知道该文件是否会被删除,因为我不知道SELECT是否会在开始时找到所有文件,或者它是否逐步找到它们并且会到达我最近删除的文件。

1 个答案:

答案 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>之后发生,它就不会捡起来。

简短回答:一下子就会发生。