Идентификатор автоматического увеличения в базе данных H2
Есть ли способ иметь BIGINT ID для автоинкрементации для таблицы. Это можно определить так
id bigint auto_increment
но это не имеет никакого эффекта (оно не увеличивается автоматически). Я хотел бы вставить все поля, кроме поля идентификатора - поле идентификатора должно быть предоставлено СУБД. Или мне нужно что-то вызвать, чтобы увеличить счетчик идентификаторов?
Ответы
Ответ 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,