使用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中的错误?
答案 0 :(得分:2)
问题是set
实际上重置了范围标识(为null),因为它不是查询。只有返回结果的语句(例如select
和call
)才是查询。所以你能做的是:
select @a := scope_identity();
这很有效。我同意set
在这种情况下不起作用是出乎意料的,我会检查是否有可能支持它。