H2 DB - 需要使用复合键进行AUTO_INCREMENT

时间:2015-03-30 03:43:00

标签: java sql h2

我有一个复合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)
);

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

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

您有两种选择:

  1. 保留自动增量键并在必要时计算所需的顺序值。自动递增的值包含有关在部分内进行排序所需的信息。
  2. 使用触发器按照您希望的方式定义值。

答案 1 :(得分:0)

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