C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[12473] [질문 ] 답변이 없어 다시 올립니다.
몰라요 [] 710 읽음    2001-11-08 19:50

MS SQL에서 RECORD에 LOCK을 거는 방법 부탁합니다. TQuery을 사용해서..
SQL driver는 optimistic locking을 사용한다는데.. 자세한 설명 부탁합니다.
정확한 사용의도는 각각의 thread들이 다른 레코드들을 읽어와 처리후 삭제 또는 update할려구 합니다.
근데 다른 레코드들을 읽을려면 레코드에 READ LOCK을 걸어야 하지 않을까요??

여러 스레드를 뛰어놓고 TQuery를 동적 생성했습니다. 각각 다른 Session과 database를
사용했구요..

#define SESSION_NAME(i)    ("Ss" + IntToStr(i))
#define DATABASE_NAME(i)   ("DB" + IntToStr(i))

qrySEND = new TQuery(NULL);
try
{
   qrySEND->SessionName = SESSION_NAME (Chan);
   qrySEND->DatabaseName = DATABASE_NAME (Chan);
}
catch (const EDatabaseError&)
{
   delete qrySEND; qrySEND = NULL;
   throw;
}

이렇게 하구 SQL문에 검색내용 넣고 Query open 했습니다.
DbiGetRecord(.. 하기 전 DbiIsRecordLocked를 먼저 실행해 보았더니
이미 LOCK이 걸려 있다고 합니다. 

Check(DbiCloneCursor(qrySEND->Handle, false, false, hCur));
Check(DbiIsRecordLocked(qrySEND->Handle, Locked));


같은 session을 써야 하는 것인지..  전체적인 조언 부탁드립니다...
기초가 부족합니다. 예제도 좀...
감사합니다.


+ -

관련 글 리스트
12473 [질문 ] 답변이 없어 다시 올립니다. 몰라요 710 2001/11/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.