자세한 질문입니다.
테이블은 다음과 같습니다.
create table TB_CONTS_SEQ
(
TRANS_DT CHAR(8) NOT NULL,
GUBUN CHAR(8) NOT NULL,
CONTS_NUM NUMERIC(13) NOT NULL,
constraint TB_CONTS_SEQ_PK primary key clustered (TRANS_DT, GUBUN)
)
go
rowlock
프로그램상에서는 이테이블의 일자와 구분자가 같은것에 CONTS_NUM
을 Update하고자 합니다.
EXEC SQL BEGIN TRAN;
EXEC SQL
UPDATE TB_CONTS_SEQ set CONTS_NUM = CONTS_NUM +1
where TRANS_DT = :H_CurrDate
AND GUBUN = 'AAAA1234';
EXEC SQL COMMIT TRAN;
이런식입니다.
그런데 종료를 하고나면 모두 Rollback 되어 있습니다.
그런데 한가지 이상한점은
Socket을 이용해서 fork()시켜가면서 DB작업이 끝나고 바로 죽는
프로세스들은 정상적으로 Commit를 때립니다.
위의 프로그램의 경우는 무한루프를 돌고 있습니다. 무언가를
모니터링하느라..
물론 signal처리를 하여 정상종료하게 해놓았지만 구래도
rollback됩니다.
이게 질문의 요지입니다. 혹시 이런경우를 겪어보신분은
해결책을 제시해주시기 바랍니다.
수고하세엽~
|