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