2014-01-08 17 views
1

對於開發我使用H2數據庫,在prod它最有可能是Postgres。有沒有一種方法可以以實現不可知的方式指示數據庫自動爲表的行提供UUID?是否有與SQL DB提供UUIDs的實現不可知的方式?

+0

然後生成您的應用程序代碼 –

+0

@JarrodRoberson,是的,但我的問題是關於在數據庫上做它。 –

+0

在幾乎所有情況下,使用生產中使用的DBMS進行開發要好得多。 DBMS獨立代碼是一個神話 - 它僅僅意味着代碼在所有DBMS上的工作方式都是一樣的。 –

回答

1

可以使用用戶定義的功能。 (請注意,如果表中有很多行(數百萬行),並且如果您在此UUID上有索引,則應該避免隨機分佈的UUID出於性能原因。這適用於所有數據庫,除非索引很容易完全符合內存。因此,如果有可能,我個人會避免使用UUID並使用序列。

0

那麼很顯然,它是那樣簡單:

CREATE TABLE items (
    uuid SERIAL, 
    PRIMARY KEY (uuid) 
) 

我沒有找到SERIAL在案H2,這裏的the doc for PostgreSQL。我不知道這是不是db-agnostic的程度,但它現在對H2和Postgre都足夠好用了。

+0

串行是**不是** UUID –

+0

@a_horse_with_no_name您是對的。我不知道這是[實際標準](http://en.wikipedia.org/wiki/Universally_unique_identifier)。感謝您的關注。 –

相關問題