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



基本上,我对H2使用Identity作为关键字和数据类型感到困惑。

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),但我想知道是否总是如此,是否有更干净的解决方案/别名。

我对 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,所以这不应该是真的必要。

最新更新