代码之家  ›  专栏  ›  技术社区  ›  AmbroseChapel

选择是同时进行还是逐步进行?

  •  4
  • AmbroseChapel  · 技术社区  · 15 年前

    我有一个进程,它使用select查找要删除的文件列表 where 删除 = 'Y' .

    我在前几天设置了这个过程,但它需要一段时间,因为它实际上也会删除文件。

    在它长时间运行的过程中,我使用了这个应用程序并删除了另外一个文件。

    此时,我意识到我不知道该文件是否会被删除,因为我不知道select是否会在开始时找到所有文件,或者它是否会逐步找到这些文件,最终会找到我新删除的文件。

    1 回复  |  直到 15 年前
        1
  •  1
  •   J. Polfer    15 年前

    这取决于何时执行select语句,以及如何编写应用程序(如果它使用的是ORM等),但我怀疑下面的分析可能有效。

    如果你有这样的代码:

    <prepare query>
    <execute query>
    for each row in <query_result_cursor>
        <delete file>
    

    select将获取它的所有行,如果稍后某行被更新为delete='y',则它将不会提取该行。

    关键是确定什么时候 <execute query> 发生,以及与您的删除相关的发生时间。如果 <执行查询> 在使用应用程序删除文件之前发生,该文件将在您的进程中被提取。如果 <执行查询> 发生在之后,它将无法接收。

    简短的回答: 它一次发生。