引用标识的外键的数据类型?

时间:2014-01-19 23:03:33

标签: h2 sqldatatypes

基本上,我对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),但我想知道是否总是如此,如果有更清洁的解决方案/别名。

1 个答案:

答案 0 :(得分:3)

我对H2没有任何经验,但是通过阅读他们的一些文档并借鉴我对其他数据库的了解,我会说:

从数据库的角度来看,

IDENTITY根本不是一种数据类型。 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,所以这不应该是必要的。