IDENTITY
在 H2 中,使用IDENTITY http://h2database.com/html/datatypes.html#identity_type类型,用于自动生成递增的 64 位长整数。
H2 中使用的单字语法是以下语法的缩写变体GENERATED … AS IDENTITY
定义在SQL:2003 https://en.wikipedia.org/wiki/SQL%3A2003标准。请参阅 PDF 文档中的摘要SQL:2003 已发布 https://web.archive.org/web/20071011220454/http://www.sigmod.org/sigmod/record/issues/0403/E.JimAndrew-standard.pdf。其他数据库正在实现这一点,比如Postgres https://blog.2ndquadrant.com/postgresql-10-identity-columns/.
CREATE TABLE event_
(
pkey_ IDENTITY NOT NULL PRIMARY KEY , -- ⬅ `identity` = auto-incrementing long integer.
name_ VARCHAR NOT NULL ,
start_ TIMESTAMP WITH TIME ZONE NOT NULL ,
duration_ VARCHAR NOT NULL
)
;
用法示例。不需要为我们传递一个值pkey
列值,因为它是由 H2 自动生成的。
INSERT INTO event_ ( name_ , start_ , stop_ )
VALUES ( ? , ? , ? )
;
在Java中。
ZoneId z = ZoneId.of( "America/Montreal" ) ;
OffsetDateTime start = ZonedDateTime.of( 2021 , Month.JANUARY , 23 , 19 , 0 , 0 , 0 , z ).toOffsetDateTime() ;
Duration duration = Duration.ofHours( 2 ) ;
myPreparedStatement.setString( 1 , "Java User Group" ) ;
myPreparedStatement.setObject( 2 , start ) ;
myPreparedStatement.setString( 3 , duration.toString() ) ;
返回生成的密钥
如果您想返回生成的密钥,请参阅类似的示例代码我的回答 https://stackoverflow.com/a/53605454/642706.