2014-12-07 50 views
0

我有下表DDL。我可以安全地使用ROWKEY來唯一標識一行嗎?我不想使用序列/ On-Insert觸發器。使用SYS_GUID()作爲Oracle表中唯一的ID是否安全?

CREATE 
TABLE T_SEGMENT 
(
    SEGMENT_NAME VARCHAR2(15), 
    ROWKEY VARCHAR2(50) DEFAULT sys_guid() 
) 

enter image description here

+1

你可以。恐怕你浪費了很多空間。 PK列比業務數據大3倍。 – ibre5041 2014-12-07 18:42:34

+0

如果你要走這條路線,你可能要考慮在觸發器中將'rowkey'設置爲'sys_guid',而不是默認設置(或除此之外)。如果你不這樣做,默認值可以被任何東西覆蓋。你可能也想考慮使用'RAW(16)'作爲'ROWKEY'的類型。 – Allan 2014-12-09 23:41:17

回答

0

如果你問 「是SYS_GUID()保證返回一個獨特的價值」,是的。好吧,幾乎是的 - GUID的一部分是隨機數生成器的結果,所以理論上你可能會得到一個重複的,這是不可能的。

當然,如果您使用GUID來唯一標識一行,將rowkey定義爲主鍵是有意義的,並且將該鍵作爲表中的第一列是有意義的。

相關問題