2011-07-05 3 views
0

이것이 최선의 방법인지 잘 모르겠습니다. 더 좋은 방법이 있다면 게시하십시오.ADO 거래 및 READPAST

파일을 읽고 레코드를 삽입하는 응용 프로그램이 있습니다. 전체 파일이 하나의 트랜잭션으로 처리됩니다. 레코드가 테이블을 삽입하기 전에

중복 점검해야 (참고 : 예외가 있기 때문에 나는이 테이블 제약 할 수 없습니다),

그래서 중복 검사가 정상 select 문하지만, 문제는 현재 트랜잭션에서 uncomitted 레코드를 읽는 것입니다. select 문에 READPAST 및 READCOMMITTED 힌트가 포함되어 있지만 여전히 레코드가 반환됩니다.

아이디어가 있으십니까?

+0

어떻게 복제본을 처리 할 예정입니까? 전체 거래 또는 다른 businnes 로직을 롤백합니까? 필드에 대한 고유 색인을 작성한 다음 응용 프로그램 내에서 예외를 catch하는 것이 더 나은가? – heximal

+0

답장을 보내 주셔서 감사합니다. 문제는 동일한 파일 내에서 중복이 허용되지만 레코드가 이전 파일에 의해 이미 생성 된 경우가 아니라는 것입니다. – Hannes

+0

문제는 사용자가 파일을 두 번 가져 오지 못하도록하는 것입니다. 나는 이것을 응용 프로그램으로 옮기고 싶지 않지만 그렇게해야 할 것 같습니다. – Hannes

답변

0

db 내에서 이것을 구현하는 유일한 방법은 잠금 테이블입니다. ISOLATION LEVEL SERIALIZABLE

+0

고마워, 그럴 수도 있지만 동시성은 큰 문제가 될 것입니다. 아픈 응용 프로그램에서 이것을 처리하십시오. – Hannes