H2数据库中的自动增量ID

时间:2012-02-19 20:58:05

标签: database auto-increment h2

是否有一个表的auto_incrementing BIGINT ID。 它可以这样定义

id bigint auto_increment

但是没有效果(它不会自动增加)。 我想插入除ID字段之外的所有字段 - ID字段应由DBMS提供。 或者我需要调用一些东西来增加ID计数器吗?

5 个答案:

答案 0 :(得分:117)

它对我有用。 JDBC URL:jdbc:h2:~/temp/test2

drop table test;
create table test(id bigint auto_increment, name varchar(255));
insert into test(name) values('hello');
insert into test(name) values('world');
select * from test; 

结果:

ID  NAME  
1   hello
2   world

答案 1 :(得分:7)

IDENTITY

现代方法使用IDENTITY类型,用于自动生成递增的64位长整数。

H2中使用的这种单字语法是SQL标准中定义的GENERATED … AS IDENTITY的缩写形式。其他数据库正在实现此功能,such as Postgres

CREATE TABLE event_ ( 
    pkey_ IDENTITY NOT NULL PRIMARY KEY ,  -- ⬅ `identity` = auto-incrementing long integer.
    name_ VARCHAR NOT NULL ,
    start_ TIMESTAMP NOT NULL , 
    stop_ TIMESTAMP NOT NULL 
) ;

答案 2 :(得分:5)

很简单:

id int auto_increment primary key

H2将自动创建Sequence对象

答案 3 :(得分:3)

您还可以使用default

create table if not exists my(id int auto_increment primary key,s text);
insert into my values(default,'foo');

答案 4 :(得分:-7)

id bigint(size) zerofill not null auto_increment,