oralce 的主鍵策略

2021-08-24 20:11:19 字數 594 閱讀 6330

最近一直在用.net做專案,資料庫用的是oracle。由於一直用慣了hibernate的主鍵生成32位唯一值策略,在.net上卻沒有這些開源的生成機制,所以很多人都是用oracle的sequence自動生成序號做主鍵。

但是使用oracle的sequence自動生成序號做主鍵也會有乙個問題,那就是當做乙個分布式系統時,多個點的子系統都會向父系統同步資料,這時就需要為每個點的子系統的主鍵sequence設定乙個區間範圍,如a點的sequence範圍1~10000,b點的sequence範圍10000~20000等等,已保證a點和b點的資料向父系統彙總時,不會出現主鍵重複。或者是把每個子系統的主鍵設定為「子系統標識+sequence」的方式,如「a_」+sequence,「b_」+sequence等。

那有沒有什麼辦法可以在oracle中像hibernate那樣生成乙個32位的唯一值呢?答案是有的,我們可以利用oracle的sys_guid() 函式生成乙個32位的唯一值。

sql如下:

select sys_guid() from dual ;

結果參見附件所示(不知道如何貼圖啊)。

得到這個結果後,如何使用,大家就應該明白了。

主鍵生成策略

一共是13種,其中包括native native 對於 oracle 採用 sequence 方式,對於mysql 和 sql server 採用identity 自增主鍵生成機制 native就是將主鍵的生成工作交由資料庫完成,hibernate不管 很常用 uuid 採用128位的uuid演算法...

主鍵生成策略

原文 generatedvalue,jpa通用策略生成器 jpa提供的四種標準用法為table,sequence,identity,auto.table 使用乙個特定的資料庫 來儲存主鍵。sequence 根據底層資料庫的序列來生成主鍵,條件是資料庫支援序列。id generatedvalue st...

主鍵生成策略

1 自動增長identity 適用於mysql db2 ms sql server,採用資料庫生成的主鍵,用於為long short int型別生成唯一標識 使用sql server 和 mysql 的自增欄位,這個方法不能放到 oracle 中,oracle 不支援自增字段,要設定sequence...