【问题标题】:Data type of a foreign key referencing Identity?引用身份的外键的数据类型?
【发布时间】:2014-02-09 00:33:02
【问题描述】:

基本上,我对 H2 使用身份作为 keyworddata type 感到困惑。

作为对 A.id 的外键引用,B.ref 的正确数据类型是什么?

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 sqldatatypes


    【解决方案1】:

    我对 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,所以这应该没有必要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-21
      • 1970-01-01
      • 2018-12-14
      • 1970-01-01
      • 2015-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多