insert 와 select 가 빈번한 포인트관련 테이블이 있습니다.
일반적으로 은행계좌같은 테이블이구요.
누적잔액를 표시하려고 상관서브쿼리나 셀프조인등을 써봤지만 노력에 비해 그닥 개선의 여지가 안보이네요.
테이블구조는 다음과 같구요
일자 | 들어온점수 | 나간점수
2013-10-11 | null | 1400 (밀리세컨드까지 동일)
2013-10-11 | null | 1400 (밀리세컨드까지 동일)
2013-10-11 | 500 | null
2013-10-10 | null | 300
2013-10-09 | 200 | null
2013-10-01 | 100 | null
출력되어야하는 화면은 다음과 같습니다.
일자 | 남은점수 | 입출점수(+/-)
2013-10-11 | -1400 | -1400 (이 지점이 문제, 밀리세컨드까지 동일한 포인트빼기가 insert됩니다. 물론 sp 에서 합산된 포인트보다 큰 경우는 패스하도록 해놨습니다.)
2013-10-11 | 0 | -1400
2013-10-11 | 1400 | 500
2013-10-10 | 900 | -300
2013-10-09 | 1200 | 200
2013-10-01 | 1000 | 100
dirty read가 발생하는 지점은 위에 붉은색으로 표시해봤습니다.
오토마우스인지 아니면 악의적인 연속클릭인지 의심스러운 insert로 합산된 포인트를 초과해버리는 문제가 발생하고있습니다.
포인트로 물건을 바꾸는 시스템인데요.. 벌써 몇건이 저런식으로 나가버렸군요. ㅠㅠ
|