簡體   English   中英

Oracle 11g JDBC預取密鑰

[英]Oracle 11g JDBC prefetching keys

我的應用程序需要知道哪一行接收數據庫中的哪個鍵。

我在具有批處理更新的讀提交隔離級別上使用JDBC。 因此,無法使用getGeneratedKeys檢索密鑰。 我的計划是以事務安全的方式從數據庫中獲取ID范圍,例如,兩個並行事務無法獲取相同的密鑰。

我可以編寫一些帶有將來行數作為參數的SQL查詢來在Oracle 11g中獲取將來鍵的列表嗎?

我在這里有什么選擇?

您可以為此使用序列:

create sequence s;

檢索ID

select s.nextval from dual;

或檢索ID范圍:

select s.nextval from dual connect by level <= 10;

只是想添加:

序列和表之間沒有明確的關系。 序列只是生成數字序列的一種機制。 您可以假設一個序列永遠不會產生重復的值,僅此而已。 不要假設順序, 絕對不要期望無間隙序列。 順序設計是在Oracle中通過這種方式完成的。 通過遵循這些規則,並且不對序列的行為進行其他假設,我們可以獲得序列的極高可擴展性。 請注意,一旦嘗試執行訂單或無間隙序列,您的性能就會遭受嚴重損害。

總結:1.)序列非常簡單,而且速度非常快。 2.)除了“禁止復制”以外,不要假設您可以預測序列的行為。 3.)序列是獨立的對象,不與表綁定,可用於生成將在同一表或許多不同表中使用的序列值。

希望能有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM