database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 6726 게시물 읽기
No. 6726
table dirty read 문제로 골치가 아픕니다.
작성자
한민환
작성일
2013-09-09 14:18ⓒ
2013-09-09 14:21ⓜ
조회수
7,756

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로 합산된 포인트를 초과해버리는 문제가 발생하고있습니다.

포인트로 물건을 바꾸는 시스템인데요.. 벌써 몇건이 저런식으로 나가버렸군요. ㅠㅠ

 

이 글에 대한 댓글이 총 1건 있습니다.

그래서 DB에서 transaction이라는 것을 지원합니다만...

 

http://msdn.microsoft.com/ko-kr/library/ms174377.aspx 를 참조하세요.

 

그리고 밀리세컨드까지 동일하다면 한 사람이 손으로 발생시킬 수 있는 수준은 아닙니다.

우욱님이 2013-09-09 15:54에 작성한 댓글입니다.
이 댓글은 2013-09-09 15:56에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
6732Query로 Drop,Create 를 했어요 데이터를 다시 살릴수있을까요? [3]
김우성
2013-09-17
7865
6728안녕하세요 존경하는 선배님들. DB 초보가 질문드려요 ㅠㅜ [4]
이성원
2013-09-11
7331
6727mssql 에서 dbreindex 이후 unallocated space가 증가했습니다. [1]
kims
2013-09-11
7938
6726table dirty read 문제로 골치가 아픕니다. [1]
한민환
2013-09-09
7756
6725MDF파일이 왜이리 증가할까요. [1]
조성남
2013-09-08
7675
6724다음과 같은 오라클 쿼리 MSSQL 쿼리로 변경 부탁드립니다. [2]
호이
2013-09-06
7780
6723다음 오라클 구문 MS-SQL 로 어떻게 바꾸나여 [1]
최종길
2013-09-06
6953
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.050초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다