2013-09-30 25 views
8

Próbuję utworzyć tabelę w bazie danych H2. Jak określić, że klucz podstawowy powinien zostać wygenerowany z sekwencji, która została utworzona?Tworzenie tabeli w bazie danych h2 przy użyciu wstępnie zdefiniowanej sekwencji dla klucza podstawowego

Sekwencja nazywa group_seq i stworzyłem go za pomocą tego komunikatu:

CREATE SEQUENCE GROUP_SEQ; 

Więc kiedy tworzę tabelę, w jaki sposób określić, że chcę moją podstawową col klucz (ID), aby wykorzystać tę sekwencję ?

Odpowiedz

15

Jeśli chcesz użyć własnego sekwencję:

create sequence group_seq; 
create table test3(id bigint default group_seq.nextval primary key); 

A jeśli nie:

create table test1(id identity); 

lub

create table test2(id bigint auto_increment primary key); 

Wszystko to jest udokumentowane w H2 SQL grammar railroad diagrams.

+0

Jak określić, że id jest kluczem podstawowym? – user1154644

+0

Zaktualizowałem moją odpowiedź. –

+0

@ThomasMueller Kiedy używam mojej niestandardowej sekwencji, nie otrzymuję auto_generated przez Hibernate. Kiedy używam flagi auto_increment, działa dobrze. Sprawdzam Info_Schema.Sequences i stwierdziłem, że kolumna IS_GENERATED jest ustawiona na wartość true dla wygenerowanych przez system sekwencji, ale false dla niestandardowych sekwencji. Czy istnieje sposób, w jaki mogę ustawić to na prawdziwe dla niestandardowych sekwencji? – Arham