Existe-t-il un moyen d'avoir un ID BIGINT auto_incrémentant pour une table. Il peut être défini comme tel
id bigint auto_increment
mais cela n'a aucun effet (il n'augmente pas automatiquement). Je voudrais insérer tous les champs, mais le champ ID - le champ ID doit être fourni par le SGBD. Ou dois-je appeler quelque chose pour incrémenter le compteur ID?
Ça marche pour moi. 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;
résultat:
ID NAME
1 hello
2 world
IDENTITY
L'approche moderne utilise le type IDENTITY
, pour générer automatiquement un entier long de 64 bits incrémenté.
Cette syntaxe à mot unique utilisée dans H2 est une variante abrégée de GENERATED … AS IDENTITY
défini dans la norme SQL: 20 . Voir le résumé dans PDF SQL: 2003 a été publié . D'autres bases de données implémentent cela, comme 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
) ;
Très simple:
id int auto_increment primary key
H2 créera automatiquement un objet de séquence
Vous pouvez également utiliser default
:
create table if not exists my(id int auto_increment primary key,s text);
insert into my values(default,'foo');