Procedure 에서 commit를 쓰지 않고 프로그램에서 쓸때.. 0 3 2,951

by 망고스틴 [2011.05.26 19:34:12]


프로그램상에서 제약조건을 확인후에 5개 테이블을 전부 Insert 또는 Update시키고 한번에 commit을
써주려고 합니다.
원래는 이게 정석인데..

기존에 프로그램 짜여있는게..
프로시저로 2개 테이블을 먼저 Insert, Update 시켜놓고, Commit를 시킨다음
다른 3개 테이블을 Commit 시키게 되어있습니다.
이경우 위의 두개가 들어갔지만 뒤의 3개가 누락되거나, 앞의 두개를 실패 했음에도
뒤의 3개 테이블의 값이 들어가는 에러가 생겨 이부분을 수정하려 하는데요..

Procedure 를 그대로 쓰면서 고치려다 보니 질문을 하게 되었습니다.
기존에 Procedure에서 마지막에 Commit을 쳐주는데요..

지금 쓰는 툴(PowerBuilder)안에서 프로시저를 호출하고 나서 다른 세 테이블도 Update하고
마지막에 Commit를 쓰려는데 이런경우 앞의 프로시저 부분도 같이 Commit 되는지 궁금해서
올렸습니다.

고수님들 알려주시면 감사하겠습니다.
수고하세요~
by xo [2011.05.26 20:22:51]
프로시저 호출후 테이블 업데이트가 하나의 세션안에서 이뤄진다면 원하는대로 마지막에 commit이나 rollback으로 처리가 되구요.
프로시저 호출부분과 테이블업데이트부분의 호출하는 세션이 다를경우, 설정이 오토커밋으로 되어 있다면 프로시저 작업후 한번 commit하고 테이블 업데이트후 commit하게 됩니다.
만약 후자의 방법으로 개발되어 있을경우 프로시저 작업상태여부를 남겨서 테이블 업데이트하기전에 여부를 체크하여 skip 또는 테이블 업데이트 작업을 진행하시면 됩니다.

by 망고스틴 [2011.05.26 21:22:22]
감사합니다. ^^
많이 도움 되었어요 ^^

by 마농 [2011.05.27 08:15:56]
프로시져 내부의 커밋을 빼시면 되지요.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입