2012-02-19 12 views
37

Czy był wymagany automatyczny przyrostowy identyfikator BIGINT dla tabeli. To może być zdefiniowana jak takIdentyfikator automatycznej inkrementacji w bazie danych H2

id bigint auto_increment 

ale to nie ma żadnego wpływu (nie zwiększać automatycznie). Chciałbym wstawić wszystkie pola, ale pole ID - pole identyfikacyjne powinno być dostarczone przez DBMS. Czy muszę wywołać coś, co zwiększy licznik identyfikatorów?

Odpowiedz

99

To działa dla mnie. 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; 

wynik:

ID NAME 
1 hello 
2 world 
+0

Dziękujemy! Dowiedziałem się, że mojego błędu nie było w kreacji, ale w instrukcji wstawiania. Użyłem wstawki do wartości testowych ("cześć"); – eriq

+3

Byłbym miły, gdybyś dał +1 mojej odpowiedzi :-) –

+0

To było na -1 i mogłem tylko podnieść go do 0, co zrobiłem. Może brakuje mi punktów, aby podnieść go wyżej. – eriq

-7
id bigint(size) zerofill not null auto_increment, 
+2

'zerofill' nie jest obsługiwany przez bazę danych H2. –

3

Bardzo prosta:

id int auto_increment primary key 

H2 stworzy obiekt sekwencji automatycznie

2

Można również użyć default:

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