2012-02-03 132 views
1

我有ID的表XXX(id_xxx INT AUTO_INCREMENT)和名稱(name_xxx VARCHAR(50)), 當我插入我做表一個新行:併發與H2數據庫

INSERT INTO xxx VALUES ​​("name for test"); 

並返回插入的結果(int = 1),然後我在我的java界面中顯示一條消息「succseed!」,直到現在它是一個非常基本和簡單的操作... 但是, 當我想返回插入id_xxx,我必須對數據庫做另一個查詢:

INSERT INTO xxx VALUES ​​("name for test"); 
//after the insert response I made: 
SELECT MAX (id_xxx) FROM xxx; 

和我在Java接口「succseed $$$是你id_xxx」顯示....

第二個版本可以很容易地給多個用戶併發訪問期間導致了嚴重的錯誤: 想象的情況下,當USER1品牌一個插入...然後H2DB中斷該用戶的操作,然後執行user2的插入操作。 當user1執行選擇最大(id_xxx)H2DB返回A FALSE id_xxx ...

(我希望我的例子很明顯,否則我會模式化這個問題)。

如何解決這個問題?

回答