идентификатор автоинкремента в базе данных H2 - PullRequest
46 голосов
/ 20 февраля 2012

Есть ли способ получить BIGINT ID для auto_incrementing для таблицы.Его можно определить примерно так:

id bigint auto_increment

, но это не имеет никакого эффекта (оно не увеличивается автоматически).Я хотел бы вставить все поля, кроме поля идентификатора - поле идентификатора должно быть предоставлено СУБД.Или мне нужно что-то вызвать для увеличения счетчика идентификаторов?

Ответы [ 5 ]

119 голосов
/ 20 февраля 2012

Это работает для меня. URL JDBC: 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
8 голосов
/ 04 декабря 2018

IDENTITY

Современный подход использует тип IDENTITY для автоматической генерации возрастающего 64-битного целого числа.

Этот синтаксис из одного слова, используемый в H2, является сокращенным вариантом GENERATED … AS IDENTITY, определенным в стандарте SQL.Другие базы данных реализуют это, , такие как 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 
) ;
5 голосов
/ 08 июля 2016

Очень просто:

id int auto_increment primary key

H2 автоматически создаст объект Sequence

3 голосов
/ 21 июня 2017

Вы также можете использовать default:

create table if not exists my(id int auto_increment primary key,s text);
insert into my values(default,'foo');
0 голосов
/ 20 февраля 2012
id bigint(size) zerofill not null auto_increment,
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...