基本上,我对H2的使用感到困惑,keyword和data 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),但我想知道是否总是如此,如果有更清洁的解决方案/别名。
答案 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,所以这不应该是必要的。