2012-09-07 2 views
4

H2 임베디드 Java dabatase를 사용하면 identity() 및 scope_identity()에 문제가 있습니다.H2가 할당 된 경우 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에 버그가 있습니까?

답변

2

set은 실제로 쿼리가 아니기 때문에 범위 ID (null)로 재설정됩니다. 결과를 반환하는 문 (예 : selectcall) 만 쿼리입니다. 그래서 당신이 할 수있는 것은 :

select @a := scope_identity(); 

이것은 작동합니다. 이 경우에 set이 작동하지 않는다는 데 예기치 않은 것에 동의하며이를 지원할 수 있는지 확인합니다.

+0

작동합니다. 도움에 감사드립니다. Petr – user1654761

+0

토마스,이 문제에 대한 진행 상황을 확인할 수있는 버그 보고서 (또는 메일 링리스트 스레드)가 있습니까? 나는 또한 그것을 고정보고 싶습니다. 관련 토론은 https://groups.google.com/d/msg/h2-database/0xJsP993RHY/RYXBoD3UiJ0J를 참조하십시오. – Gili

관련 문제