2014-01-19 22 views
1

基本上,我對H2的身份使用感到困惑,因爲keyworddata type引用標識的外鍵的數據類型?

B.ref作爲A.id的外鍵引用的正確數據類型是什麼?

create table A(id IDENTITY) 
create table B(id IDENTITY, ref ???) 
alter table B 
     add constraint BRefOK foreign key (ref) references public.A; 

的H2控制檯顯示它的BIGINT(19),但我不知道這是不是總是這樣,如果有一個清晰的解決方案/別名。

回答

2

我沒有與任何H2經驗,但是從閱讀他們的一些文檔,並在我所知道的其他數據庫的繪畫,我會這樣說:

身份是不是一個真正的數據類型都,從數據庫的角度來看。 IDENTITY使該列被聲明爲BIGINT類型,並且具有相關序列的附加屬性以提供其值並作爲表的主鍵。

如果你覺得這是「乾淨」有數據類型,看起來像他們匹配,我相信你可以列聲明是這樣,而不是和意義應該是等價的:

create table A(id BIGINT auto_increment primary key); 
create table B(id BIGINT auto_increment primary key, ref BIGINT); 
alter table B add constraint BRefOK foreign key (ref) references public.A; 

然而,有人誰知道H2應該知道IDENTITY = BIGINT,所以這不應該是必要的。

相關問題