2011-02-09 3 views
1

내가 트랜잭션 DB에서 작동하는 방법을 배우고,이 일을 내가 쓴 다음 테스트 SQL 노력하고 있어요 : 하나 개의 행이 테이블에 추가되고이 코드의 실행 후DB2에서 현재 분리 레벨을 얻는 방법은 무엇입니까?

SAVEPOINT STOP_HERE ON ROLLBACK RETAIN CURSORS; 

INSERT INTO TESTSCHEMA."test" (ID, NAME) VALUES (89898, 'SDFASDFASD'); 

ROLLBACK TO SAVEPOINT STOP_HERE; 

SELECT * FROM TESTSCHEMA."test"; 

. 하지만 시작 부분에 다음 줄을 추가하는 경우 :

SET TRANSACTION ISOLATION LEVEL READ COMMITTED; 

내가 예상대로, 즉 트랜잭션이 올바르게 롤백하지 않고 DB에 새로운 항목,하지만이 코드를 실행하면 다시 데이터 스튜디오 나에게 오류를 보여줍니다 모든 작업 첫 번째 줄 : 현재 격리 수준을 얻을 수있는 방법이 있나요 1 시간보다 이유가 설정할 수 없습니다 격리 수준 이상 :

[SQL0428] SQL statement can not be launched. 

그래서 제 질문은?

나는 모든 대답과 링크에 대해 매우 감사 할 것입니다.

추신. DB2/iSeries V5R4를 사용 중입니다.

PPS. 내 나쁜 영어로 죄송합니다

+0

각 COMMIT 문 다음에 SQL COMMIT을 수행합니까? –

+0

아니요, 질문의 본문에 게시 된 –

+0

SQL 드라이버에 대해 [getDefaultTransactionIsolation()] (http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=%2Frzahh % 2Fjavadoc % 2Fcom % 2Fibm % 2Fas400 % 2Faccess % 2FAS400JDBCDatabaseMetaData.html). – user2338816

답변

1

아마도 특수 레지스터 current isolation에서 현재 격리 수준을 얻을 수 있습니다. 격리 수준을 설정하기 전에 COMMIT 또는 ROLLBACK을 수행하지 않았기 때문에 SQL0428이 표시되고 해당 세션에서 진행중인 트랜잭션이 여전히있었습니다.

+0

DB2 버전의 http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp에 특수 레지스터 CURRENT ISOLATION이 없습니다. 현재 분리 레벨을 얻는 다른 방법이 있습니까? –

+0

@Andriy Petrivskyy 저는 믿을 수 없습니다 ... 가장 자주 당신을 위해 그 일들을 추적 할 수있는 응용 프로그램 서버와 프레임 워크를 사용할 것입니다 ... – erloewe

+0

당신 말이 맞습니다. 필자가 사용해야하는 드라이버 (http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=%2Frzahh%2Fjavadoc%2Fcom%2Fibm%2Fas400%2Faccess%2Fdoc-files%2FJDBCProperties. html)에는 격리 수준을 설정하는 옵션이 있습니다. 고맙습니다. –