2012-12-04 50 views
1

嗨,我有一個事務,我根據給定的數據從表中刪除了一些行,然後我正在爲同一個表上的相同數據做一個select查詢。我試過了並且它正在成功發生。但是,如果在我們嘗試在該時間點執行刪除操作時進入事務邏輯,將在表上應用鎖,因此可能無法從表中讀取相同的數據,除非交易承諾。所以我想知道這種情況是否有效,或者我的理解存在一些錯誤。在一個事務中刪除並選擇操作

在函數內部主體如下序列:

public void method(){ 

//transaction starts 

// delete operation on table 1 

// select operation on table 1 

// transaction is committed. 

} 

回答

3

不會有任何問題刪除,然後在同一個事務的上下文中選擇數據

如果有多個併發事務處理相同的數據,則可能需要考慮鎖定。確切的機制取決於交易在做什麼,DBMS引擎,交易隔離級別等。

0

你沒有說你正在使用哪個數據庫,但下面的內容應該是通用的和通用的。

如果你的方法使用相同的連接進行刪除和選擇,從連接的上下文(視角)刪除已經發生,所以你的查詢「對於同一個表上的相同數據」將不返回任何記錄。

從所有其他併發連接(包括你的方法,如果它不使用刪除相同的連接,並選擇),你的工作是不是承諾等取決於技術和設置他們可以從被阻止甚至直到您回滾或提交或者他們可能會看到交易開始之前的數據版本。