database – identity()/ scope_identity()在分配时在H2中不起作用

使用H2嵌入式
Java dabatase,我遇到了identity()和scope_identity()的问题.分配给变量时,这些函数似乎不起作用:

我们有简单的表格:

create table test3 (x int IDENTITY);

这可以正常工作,返回插入的最后一个值:

insert into test3 values (default);
select scope_identity()

以下构造应返回相同但返回null

insert into test3 values (default);
set @a=scope_identity();
select @a;

我做错了什么还是H2中的错误?

最佳答案 问题是set实际上重置了范围标识(为null),因为它不是查询.只有返回结果的语句(例如select和call)才是查询.所以你能做的是:

select @a := scope_identity();

这有效.我同意在这种情况下设置不起作用是意外的,我将检查是否可以支持它.

点赞