저희가 개발한 업체가 있는데요
은행이랍니다. 타행으로 송금하는 프로그램을 짰는데요.
원래 타행송금은 1억 이상이 되지 않기 때문에
1억 이상의 금액을 송금할 때는 프로그램 내부에서 1억단위로 짤라서 내보냅니다.
문제는 이 은행이 서울본점과 부산지점이 있는데요...
만약 부산지점에서 50억 이라는 금액을 타행으로 송금을 하면
(이때 loop를 돌겠죠)
1억씩 짤라서 테이블(A)에 인서트를 하게 됩니다.
이떄 테이블의 키값은 'Go_No'라고 해서 한건이 발생할때만다 +1을하여 증가시킵니다.
근데 이 처리 중간에 서울에서 테이블(A)에 인서트를 하게되는 트랜잭션인발생하면...
50억이 1억단위로 짤라지면서 나가다가 서울에서 트랜재션이 발생한 시점에 죽어버립니다..
에러는 'key violation'이라고 나오는데..
그렇다면..
현재 부산에서는 30억까지 보냈다치면.. 다음 Go_no 31번 일텐데..
이때 갑자기 서울에서 트랜잭션이 발생해서 부산에서 사용해야할 Go_no 31번을 써버려서..정작 부산에서는 해당 하는 Go_no를 쓸라하면 중복에러가 난다는 소린데..
이게 가능한 소리인가요?? ㅡㅡ?
며칠을 골머리를 앓아가며 소스만 뚫어져라 보는데..
이해가 안되요..
답답해서 몇자 적어봅니다 ㅜ.ㅜ
비슷한 경우 격으신 분들 있으시면 조언좀 해 주세요 ^^
가능한 이야기 같은데요. 제 생각에는 키필드를 다시 잡아주는 것이 안전하리라 생각됩니다. 지점코드랑 일련번호랑 같이 주면 근본적으로 키중복이 일어나지 않으리라 생각됩니다.