Подтвердить что ты не робот

Идентификатор автоматического увеличения в базе данных H2

Есть ли способ иметь BIGINT ID для автоинкрементации для таблицы. Это можно определить так

id bigint auto_increment

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

4b9b3361

Ответ 1

Это работает для меня. 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

Ответ 2

IDENTITY

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

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

Ответ 3

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

id int auto_increment primary key

H2 автоматически создаст объект последовательности

Ответ 4

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

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

Ответ 5

id bigint(size) zerofill not null auto_increment,