【问题标题】:H2 DB - Need to AUTO_INCREMENT with Composite KeyH2 DB - 需要使用复合键进行 AUTO_INCREMENT
【发布时间】:2015-03-30 03:42:59
【问题描述】:

我有一个复合 PK,其中一个字段是 AUTO_INCREMENTLong

我注意到这样做会浪费列,因为它实际上只是自动递增并且没有考虑复合 PK。

我正在寻找这种效果:

例子:

Section ID
----------
ABC     1
ABC     2
DEF     1
DEF     2
DEF     3

但是,通过使用AUTO_INCREMENT,结果变为:

Section ID
----------
ABC     1
ABC     2
DEF     3
DEF     4
DEF     5

当前CREATE TABLE声明如下:

CREATE TABLE IF NOT EXISTS Test(
    Section varchar(128) NOT NULL,
    ID long AUTO_INCREMENT NOT NULL,
    PRIMARY KEY(Section, ID)
);

我该如何解决这个问题?

【问题讨论】:

    标签: java sql h2


    【解决方案1】:

    看起来您的底层数据库是 MySQL。这实际上并没有什么不同。 . .没有数据库直接支持您正在寻找的功能。

    你有两个选择:

    1. 保留自动增量键并在必要时计算您想要的顺序值。自动递增的值包含您在一个部分中订购所需的信息。
    2. 使用触发器以您希望的方式定义值。

    【讨论】:

      【解决方案2】:

      您必须按顺序计算主键。没有任何数据库引擎支持此功能。

      【讨论】:

        猜你喜欢
        • 2012-07-04
        • 2011-04-17
        • 2013-03-16
        • 2011-12-31
        • 1970-01-01
        • 2023-01-31
        • 2016-11-08
        • 2012-07-03
        • 1970-01-01
        相关资源
        最近更新 更多