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

FireBird Q&A
[4608] SELECT 시에 트랜젝션처리 문의
델맨 [delphiman] 2271 읽음    2013-05-13 17:39
환경 : WIN7, VB.NET , FIREBIRD 2.5 에서 작업중입니다.

문의 내용:
아래의 코드에서 처럼 수동으로 키생성을 하려고 하는데 여러사람이 접속시에는 중복키가 간혹가다 생겨버리네요..
트랜젝션처리를 하고는 있는데 Select 구문에서는 트랜젝션처리가 안되는것인지요.

아래의 코드를 사용하여 두대의 pc(개발pc,사용자pc)에서 실행후

개발pc에서는 while부분에 브레이크 포인트를 하여 commit 을 하지 않고

홀드를 시켜놓으면  사용자pc에서 실행을 하면 개발pc에서 commit 을 할때까지 대기하리라 예상했는데
그냥 넘어가 버리네요.

다른pc에서 select 부분이 트랜젝션이 마무리 되지 않으면

내 pc에서 프로그램이 wait 될수 있으려면 어떻게 해야하나요?
connection 부분의 IsolationLevel 값을 조정해야 하나요?
내 pc에서 db를 읽을때는 다른pc에서 db를 select하지 못하도록
read lock을 거는 방법은 무엇이 있을까요?

예전에는 아래와 같이하면 되었던거 같은데..
아무리 해도 되지 않네요....  ms-sql에선가....???

고수님들 조언 부탁드립니다.
'=========================== 
fbTrans = fbCon.BeginTransaction
qryStr = "Select COALESCE(MAX(pkey),0) + 1 as pkey from tb_test where pyear = ""2013""  "  
           
fbCmd.CommandType = CommandType.Text '쿼리 문자열 형식을 지정해줌
fbCmd.CommandText = qryStr                        '쿼리문자열을 command개체에 할당해줌
fbCmd.Connection = fbCon                             'db연결을    command개체에 할당해줌
fbCmd.Transaction = fbTrans                         '위에서 설정한 트랜젝션을 command개체에 할당해줌
           
fbReader = fbCmd.ExecuteReader()       
           
While (fbReader.Read())       <<<<<<-----------  디버그 브레이크포인트 부분  <<<<<<<<<< 
                                                                           
    label1.Text = fbReader.GetValue(0).ToString
               
End While
           
fbTrans.Commit

'===================================================

+ -

관련 글 리스트
4608 SELECT 시에 트랜젝션처리 문의 델맨 2271 2013/05/13
4609     Re:SELECT 시에 트랜젝션처리 문의 델맨 2049 2013/05/13
4634         Re:Re:SELECT 시에 트랜젝션처리 문의 까막.윤창희 1919 2013/08/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.