2014-12-14 2 views
0

삽입 된 레코드를 트리거로 사용하는 DB2 테이블에 INSERT를 쓰고 파일을 잠그고 파일을 잠그는 것을 범한 혐의로 기소되었습니다. 일하는 방아쇠.DB2 테이블에 ibatis 삽입하면 트리거가 작동하지 않도록 잠금이 설정됩니다.

현재 레코드를 쓸 수는 있지만 응용 프로그램이 중단되고 DB2 데이터베이스에서 응답이 없습니다. (비록 쓰지 만!).

나는 내가 "업데이트 모드"를 사용하여 작성 될 수 들었습니다하지만 실제로 모드를 설정하지 않는 이외의 특정 아무것도 이루어지지 않은

:

<resultMap id = "insertEntry" class = "customer"> 
     <result property = "supplierNumber"  column = "SUPN"/> 
     <result property = "status"   column = "STAT"/> 
     <result property = "timeAccepted" column = "TIMEACC"/> 
     <result property = "dateAccepted" column = "DATEACC"/> 
     <result property = "dateCompleted" column = "DATECOMP"/> 
    </resultMap> 


<insert id = "insertCUSTRecord" parameterClass="insertEntry"> 
INSERT INTO ##AKQQ3 
(SUPN, STAT, TIMEACC, DATEACC, DATECOMP) 
VALUES (#supplierNumber#, #status#, #timeAccepted#, #dateAccepted#, #dateCompleted#) 
</insert> 

난 단지 내 응용 프로그램 매달려의 원인으로 추측 할 수 및 하나의 추측은 INSERT 문에 관련 모드를 설정하지 않은 결과이지만, ibatis의 IN, OUT 및 INOUT 매개 변수 중 어떤 것이 관련이 있는지 알지 못합니다.

RPG 팀은 방금 잠금을 해제하기 위해 삽입 한 레코드를 어떻게 든 시도하고 읽으려고 시도했으며 이러한 ibatis 모드 중 어떤 것이 해당 기능을 제공하는지 궁금합니다.

문서 상태 "매개 변수가 OUT 또는 INOUT 인 경우 매개 변수 개체 속성의 실제 값이 변경됩니다."하지만이 개체가 가리키는 개체에 대해서는 다소 혼란 스럽습니다. IN에 대한 모든 인서트 값을 내가 원하는 값으로 설정할 수 있습니까?

나는 다람쥐 SQL 클라이언트를 사용하여 동일한 삽입 (jt400 JDBC 드라이버 사용)을 시도했으며 레코드를 작성 했음에도 불구하고 데이터베이스에서 확인 응답을받지 못한다는 것을 언급해야합니다.

내 응용 프로그램에서는 이상적인 솔루션이 아니라는 것을 알고 있지만 3 초 후에 종료되는 ExecutorService를 통해 DB2 데이터베이스에서 응답을받지 않는 "불과 잊음"접근 방식에 의지했습니다.

내 프로그램은 봄과 iBATIS를 다음과 같이 삽입이 호출하는 코드와 스트럿을 통합 :

public void insertIntoAKQA(CustomerTriggerDetailsBean customerTriggerDetails) { 
    SqlMapClientTemplate template = getSqlMapClientTemplate(); 
    template.insert("insertCUSTRecord", customerTriggerDetails); 
} 
+0

실제로 기록을 쓰는 것이 아니라 영구히 쓸 수 있습니다. 레코드를 작성하면 레코드가 커밋 될 때까지 임시 잠금이 설정됩니다. 커밋하지 않거나 커밋하지 않은 전략으로 작동하면 프로세스를 종료하면 실제로 레코드가 제거됩니다. 여기서'IN' /'OUT' 매개 변수는 중요하지 않습니다. 이것은 프로그램이 수행하고있는 다른 일에 전적으로 달려 있습니다. 트랜잭션의 경우 대부분의 경우 트리거가 여전히 실행되어야합니다. 우리는 당신의 프로그램과 방아쇠를 볼 필요가 있습니다. –

+0

SQL 문을 호출하는 코드를 포함하도록 원래 질문을 편집했습니다. 트리거는 RPG에서 가장 가능성이 높으며 어떤 코드/사실을 얻을 수 있는지 알 수 있습니다. 아마 내가 그 잠금에 대한 책임이 없다는 기회가 있습니까? –

+0

... 그다지 도움이되지 않는다면, 우리가 사용하고있는'SqlMapClientTemplate'의 구현을 볼 필요가 있습니다. Spring 설정 파일은 또한 문제의 일부일 수있다. (예를 들어, 수동으로 커밋 할 것을 기대하고 있지만, 그렇게하지 않는다면). 성명서가 반환해야하는 기본 키를 버리는 것처럼 보입니다. 나는 또한 당신이''Trigger ''라는 레이블이 붙은 것을 매개 변수 객체로 전달한다는 사실에 대해서 약간 걱정하고있다. –

답변

0

문제는 잘못 기록 된 RPG 트리거 밝혀졌다. 그들이 해결하기 전까지는 할당 된 시간 후에 내 응용 프로그램을 다시 제어 할 수있는 Java ServiceExecutor로 해결 방법을 관리했습니다.

관련 문제