我運行兩個INSERT SQL調用一個接一個地是Statement.RETURN_GENERATED_KEYS每個刀片具有它分配給它自己唯一的ID後,當線程安全的。 ( - 這是無論哪種方式,同樣的問題連接池或嵌入式數據庫)德比 - 獲取RETURN_GENERATED_KEYS似乎沒有使用相同的連接創建的PreparedStatement
每次調用與各種Connection.prepareStatement其中連接可以重新使用不同的線程中產生。
所以,當我做:
result = preparedStatement.getGeneratedKeys();
result.next();
return result.getInt(1);
這回來不會出現線程安全的數字!它通常從第一個線程中抓取生成的ID。
基本上,如果我運行多個線程,嵌件做工精細,但隨後試圖讓自動生成的唯一的ID它帶回相同的ID。同樣,我懷疑這是因爲連接是共享的,我該怎麼辦
connection.prepareStatement(sqlString, Statement.RETURN_GENERATED_KEYS);
我看到有許多的替代參數,但我不熟悉他們。我怎樣才能保證每個preparedStatement稍後會返回它自己的唯一自動生成的ID?
UPDATE:這似乎只與嵌入式Derby數據庫驅動程序發生...