2013-10-18 3 views
1

내가 커밋되지 않은 데이터의 분리 레벨을 지정 Ɒ이 읽기를 시도 저장 프로 시저가 최선을 다하고 읽어야 최선을 다하고 읽을 수있는 격리 수준을 지정하는 커밋되지 않은 데이터 inspite 읽기를 시도합니다 (* CS). 아래 내 저장 프로 시저입니다.저장 프로 시저가

CREATE PROCEDURE SP_TEST_DATA_GET (IN P_PROCESSNM VARCHAR(17) , 
            IN P_Status char(1)) 
RESULT SETS 1 
LANGUAGE SQL 
SET OPTION COMMIT=*CS 


P1 : BEGIN 

DECLARE CURSOR1 CURSOR WITH RETURN FOR 
SELECT DATA 
FROM IAS_TEST_DATA 
WHERE (PROCESSNM IS NULL OR PROCESSNM = P_PROCESSNM) 
AND Status=P_Status ; 


OPEN CURSOR1 ; 

END P1`` 

저는 Db2 v6 시리즈를 사용하고 있습니다.

커밋되지 않은 데이터를 읽지 않도록하려면 어떻게해야합니까? 저장 프로 시저의 격리 수준이 작동하지 않는 것 같습니다.

상담하십시오.

답변

5

당신은 트랜잭션 격리 작동 방법을 오해하는 것 같다. "읽기 확약"은 다음을 의미합니다.이 작업 단위 (UOW)는 다른 사용자가 확약 한 데이터 만 읽을 수 있으며 확약되지 않은 변경 사항에서 잠금이 해제 될 때까지 대기합니다. 매뉴얼 (http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/db2/rbafzmstisol.htm#isol)을 공부하는 것이 좋습니다. 그것은 특히 "다른 행을 통해 다른 행을 바꾼 행 (또는 UPDATE 행 잠금으로 현재 잠긴 행)은 커밋 될 때까지 읽을 수 없습니다"라고 말합니다.

DB2 for i v6 이상에서는 SELECT 문에 SKIP LOCKED DATA 절을 사용하여 원하는대로 수행 할 수 있습니다.

+1

감사합니다. 그게 내가 원하는거야. select 문에 SKIP LOCKED DATA 절을 추가하면 정상적으로 작동합니다. – Abs

+0

내가 이해하지 못하는 것이지만, 커밋되지 않은 데이터를 위해 잠금이 해제 될 때까지 기다리는 이유는 무엇입니까? 커밋되지 않은 데이터를 무시하면 안됩니다. – Abs