Lock Select

업무 요건상 동시에 처리할 수 없는 데이터를 Select할 때 DB에서 제공하는 FOR UPDATE 키워드를 사용하여 Lock 처리한다. WAIT 시간은 업무에 따라 알맞게 설정한다.

형식

NOWAIT : 해당 Row가 Lock 상태일 때 바로 SQL 에러(ORA-00054)를 발생시킨다.

WAIT X : 해당 Row가 Lock 상태일 때 X초 재시도 후 SQL 에러(ORA-30006)을 발생시킨다.

        SELECT
            EMP_ID AS empId,
            EMP_NM AS empNm,
            SALARY AS salary,
            DEPT_CD AS deptCd
        FROM EMPLOYEE
        WHERE DEPT_CD = #{input.deptCd}
        FOR UPDATE [NOWAIT | WAIT seconds]

개발 및 유의사항

조회 Row가 Lock 상태이면 CannotAcquireLockException(caused by ORA-00054/ORA-30006)이 발생한다.업무 구현에 필요한 경우에만 catch 한다.

        // dbio호출
        try {
            evio.selectEmployee(input);
        } catch (CannotAcquireLockException e) {
            // DB LOCK 타임아웃 발생시 처리로직
        }
SWLab Bankware Global
  • 전체
  • BXM
  • BXCM
  • BXCP
  • BXI
제품 선택 시 더 정확한 매뉴얼 가이드를 제공해드립니다.

Copyright© Bankwareglobal All Rights Reserved.