업무적인건대... 이런 경우는 어떻게 처리 하는가요? 0 3 2,685

by 손님 [SQL Query] query [2009.08.19 08:54:37]


안녕하세요..
프로그램 구현할때 밑에와 같은 경우는 어떻게 처리하나 궁금해서 질문 합니다.

디비 컬럼중에 flg 란 컬럼이 있습니다.

s는 승인 x 부결 m 결재

업무는 타부서에서 구매부한테 구매할 물건을 승인을 받는것입니다.
구매부에서 승인을 하면 flg는 s가 됩니다.
회계부에선 수시로 조회를 해서 s인것을 찾아 돈을 내주고 플래그를 m로 변경합니다.

구매부에서 승인 처리하는 사람은 10명 입니다.
구매부에선 s를 해놓고 flg가 m이 아니면 부결을 할수 있습니다..

이때 시간차에 대한 질문 인대요..

구매부에서 1번째 사람이 주문번호 1100 를 승인 처리 햇습니다.
프로그램에서 승인처리를 하면 s로 업데이트하고 화면을 다시 리플리쉬해서 s란 것을 보여주고..
히든으로 s란 플래그를 가지고 있습니다..

그리고 조금후 회계부에서 조회를 햇더니 s껀이 있어서 결재를 해서 m으로 flg를 updat햇습니다.


승인 처리 해놓고 다른일 하다가 어 잘못됏군... 부결처리 해야겟네..
하고 부결처리를 합니다.
이때 히든으로 가지고 있던값이 s이므로 ... 부결 처리가 돼잖아요.
원랜 안돼야 하는대...

이런 오류를 막기위해선 어떤식으로 처리를 하나요..
updat하기전에..주문번호 flg를 검색해서..결재m 상태라면.. 오류처리를 하나요?
만약 1000건을 동시에 한다면 이렇게 select해서 껀껀이 확인하려면 시간이 많이 걸리는대....

by 러드 [2009.08.19 09:17:46]
제가 잘 이해를 했는지 몰라서 적습니다.
1) 111 s라는 값을 승인처리한다.
2) 111 m이라고 결재처리된다.
그런데 1) 에서 조회된 내역이 남았는지 모르고 1)에 s를 부결처리를 진행될수도 있다!! 즉 1)에 대해서 재 조회가 들어가야 하는데 안될경우를 방지하고 싶은것입니까?

암튼 저런것이라고 한다면!!!
일딴!!

update문으로 한방에 1000건이 처리 가능합니다!!

하지만 저는 여기서 궁금한점이 화면 ui를 어떻게 처리했는지!!1

부결처리를 위해서 특정 컬럼에 event를 사용해서 s -> m으로 강제적으로 값을 변경하는것인지?

이럴경우 프로그램상에서 에러를 막어야겠죠!!!
지금에 s값은 변경되었다!! 재조회가 필요하다 이렇게!!!!

아니면 일괄적 버튼으로 처리가 된다면!!!!

그냥 update 조건에 s에 해당하는 것들에 대해서만 부결처리 하면 되겠네요!!

조금 사용자는 재 조회를 안해서 111 s 하지만 결재처리된거!!!
에 대해서 조금 혼도일 올수도 있겠지만!!!!

어짜피 이 부분도 db상에서는 m으로 update된 부분이니까 ㅋㅋ

제가 이해한 부분이 틀리다면 다시 적어주세요!!! ^^
잘 모르지만 다시한번 생각해보겠습니다.
수고하십시오!!!

by 질문자 [2009.08.19 10:12:00]
님께서 이해하신대로가맞습니다.

제가 그걸 방지하기위해서... 인서트나 업데이트하기전에
쿼리를 한번 더 할려고 하거든요.
근대 이것도 위험한게 selec후 바로 업데이트가 돼면 .. 이거도 정확하진 않잖아요.
아무래도 where절에 조건을 주는게 좋은거 같은대...
감사합니다

by 웁스 [2009.08.19 12:29:16]
https://www.dbguide.net/know/know101003.jsp?IDX=1551&pg=2&catenum=14

위의 사이트에 가보시면 답을 찾을 수 있을것입니다..
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입