2013-09-30 12 views
8

Sto tentando di creare una tabella in un database H2. Come posso specificare che la chiave primaria debba essere generata da una sequenza che è stata creata?Creazione di una tabella nel database h2 utilizzando la sequenza predefinita per la chiave primaria

La sequenza si chiama group_seq, e ho creato utilizzando questa dichiarazione:

CREATE SEQUENCE GROUP_SEQ; 

Così, quando creo la tavola, come faccio a specificare che io voglio che il mio col chiave primaria (ID) per utilizzare quella sequenza ?

risposta

15

Se si desidera utilizzare la propria sequenza:

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

E se no:

create table test1(id identity); 

o

create table test2(id bigint auto_increment primary key); 

Tutto questo è documentato nel H2 SQL grammar railroad diagrams.

+0

come si specifica che id è la chiave primaria? – user1154644

+0

Ho aggiornato la mia risposta. –

+0

@ThomasMueller Quando uso la mia sequenza personalizzata non viene generato automaticamente da Hibernate. Quando uso il flag auto_increment, funziona perfettamente. Ho controllato in Information_Schema.Sequences e ho scoperto che la colonna IS_GENERATED è impostata su true per le sequenze generate dal sistema ma false per le sequenze personalizzate. C'è un modo per impostarlo su true per sequenze personalizzate? – Arham

Problemi correlati