4
我有一個使用SELECT查找要刪除的文件列表的過程where
刪除= 'Y'
。SELECT是否一次或逐步發生
我設置了這個過程,但它需要一段時間,因爲它實際上也會刪除文件。
而在其長時間的操作中,我正在使用該應用程序並刪除了一個文件。
在這一點上,我意識到我不知道該文件是否會被刪除,因爲我不知道SELECT是否會在開始時找到所有文件,或者它是否逐步找到它們,並且會得到到我最近刪除的文件。
我有一個使用SELECT查找要刪除的文件列表的過程where
刪除= 'Y'
。SELECT是否一次或逐步發生
我設置了這個過程,但它需要一段時間,因爲它實際上也會刪除文件。
而在其長時間的操作中,我正在使用該應用程序並刪除了一個文件。
在這一點上,我意識到我不知道該文件是否會被刪除,因爲我不知道SELECT是否會在開始時找到所有文件,或者它是否逐步找到它們,並且會得到到我最近刪除的文件。
它取決於何時執行SELECT語句以及如何編寫應用程序(如果它使用的是ORM等),但我懷疑下面的分析可能是有效的。
如果你有一些代碼是這樣的:
<prepare query>
<execute query>
for each row in <query_result_cursor>
<delete file>
的選擇將已取得所有它的行,如果以後更新行時有刪除=「Y」,那麼就不會選擇它向上。
關鍵是確定何時發生<execute query>
,以及何時發生與您的刪除有關。如果在使用您的應用程序刪除文件之前發生了<execute query>
,它將在您的過程中被拾取。如果<execute query>
發生後,它不會拿起它。
簡短回答:它發生在一次。
出於好奇,你如何執行文件刪除?直接與MySQL?或者你有一個程序利用sql結果來確定要刪除的內容? – JYelton 2010-05-28 00:17:21
這很大程度上取決於您是使用InnoDb還是MyISAM表,以及innodb是否取決於您在哪個隔離級別運行查詢。 – nos 2010-05-28 00:26:17