4

使用 H2 嵌入式 Java 数据库,我遇到了 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中的错误?

4

1 回答 1

2

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

select @a := scope_identity();

这行得通。我同意set在这种情况下不起作用是出乎意料的,我会检查是否可以支持它。

于 2012-09-07T14:11:36.757 回答