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、クエリではないため、実際にスコープ ID を (null に) リセットすることです。selectやなど、結果を返すステートメントのみcallがクエリです。だからあなたができることは次のとおりです。

select @a := scope_identity();

これは機能します。setこの場合、うまくいかないのは予想外であることに同意します。サポートできるかどうかを確認します。

于 2012-09-07T14:11:36.757 に答える