2010-05-28 73 views
4

我有一個使用SELECT查找要刪除的文件列表的過程where刪除= 'Y'SELECT是否一次或逐步發生

我設置了這個過程,但它需要一段時間,因爲它實際上也會刪除文件。

而在其長時間的操作中,我正在使用該應用程序並刪除了一個文件。

在這一點上,我意識到我不知道該文件是否會被刪除,因爲我不知道SELECT是否會在開始時找到所有文件,或者它是否逐步找到它們,並且會得到到我最近刪除的文件。

+1

出於好奇,你如何執行文件刪除?直接與MySQL?或者你有一個程序利用sql結果來確定要刪除的內容? – JYelton 2010-05-28 00:17:21

+1

這很大程度上取決於您是使用InnoDb還是MyISAM表,以及innodb是否取決於您在哪個隔離級別運行查詢。 – nos 2010-05-28 00:26:17

回答

1

它取決於何時執行SELECT語句以及如何編寫應用程序(如果它使用的是ORM等),但我懷疑下面的分析可能是有效的。

如果你有一些代碼是這樣的:

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

的選擇將已取得所有它的行,如果以後更新行時有刪除=「Y」,那麼就不會選擇它向上。

關鍵是確定何時發生<execute query>,以及何時發生與您的刪除有關。如果在使用您的應用程序刪除文件之前發生了<execute query>,它將在您的過程中被拾取。如果<execute query>發生後,它不會拿起它。

簡短回答:它發生在一次。

相關問題