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

时间:2012-09-07 14:03:41

标签: database 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中的错误?

1 个答案:

答案 0 :(得分:2)

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

select @a := scope_identity();

这很有效。我同意set在这种情况下不起作用是出乎意料的,我会检查是否有可能支持它。