Background Image

FORUM

조회 수 10228 추천 수 0 댓글 2
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

VB 6.0   ADODB 로 프로그래밍 중입니다

 

abcd 라는 테이블에 컬럼이 aaa 라고 있고 varchar(100) 입니다

 

이 테이블에는 데이터가

111

222

333

 

이렇게 3 row 가 있습니다

 

vb 상에서

 


    Conn.BeginTrans
   
    SQL = "insert into abcd(aaa) values ('444');"
    call Conn.Execute(SQL)
   
    SQL = "insert into abcd(aaa) values ('555');"

    call Conn.Execute(SQL)


    SQL = "insert into abcd(aaa) values ('666');"
    call Conn.Execute(SQL)

    Conn.CommitTrans
   

코드를 이렇게 작성하였는데  CommitTrans 직전에 (CommitTrans 하기전에) 브레이트 포인트를 걸고

질의편집기에서 확인해 보니 444~666 까지 다 인서트가 되어 있더군요

 

CommitTrans 를 하니까 역시나 444~ 666까지 그대로 있었고, CommitTrans 가 아닌 RollbackTrans 를 하게 되면

RollbackTrans 직전에 테이블을 보면 444~666 까지 인서트가 되어 있는데 RollbackTrans 를 하면

111~333 까지만 나옵니다

 

제가 하고자 하는 작업은 트랜잭션을 걸어서 인서트를 하는 동안에는 인서트 하고 있는 내용이 다른사람의

SELECT 작업시에 나오지 않다가, 커밋을 하게 되면 그때 나오게 하는 방법이 있는지 궁금합니다

 

위 작업을 예로 들면

 

CommitTrans 직전에 (CommitTrans 하기전에) 브레이트 포인트를 걸고

질의편집기에서 확인해 보면 111~333 까지만 나오고,

CommitTrans  한 다음 확인해 보면 111~666 까지 나오게 할 수 있는건지 알고 싶습니다

 

제가 말주변이 없어서 제 질문의도가 글에 잘 나타났는지 모르겠네요 다시 설명하자면,

제가 인서트 또는 업데이트 작업 도중에 테이블을 일종의 잠금(?) 설정을 하여서, 다른 사람들은

제가 작업 완료전에는 작업전 데이터만 보여지게 하고 제가 작업완료 명령을 내린 후에

인서트나 업데이트한 내용이 다른사람에게 보여지게 할 수 있는지 입니다

 

참고로 질의편집기는 dba 권한으로 실행하였고, vb 에서는 따로 아이디를 만들어서 접속하였습니다

 

  • ?
    유니콘 2011.03.03 03:40

    update 도 마찬가지네요 커밋하기 전인데 이미 업데이트가 되어 버리네요

  • ?
    cubebridge 2011.03.05 02:44

    아래의 사항은  cubrid.conf에 parameter로 관리되는 부분입니다. 아래의 설정에 따라 transaction수준이 변동되게 되어 있는데 default는 "REPEATABLE READ CLASS with READ UNCOMMITTED INSTANCES"입니다.

    원하시는 transaction수준 설정을 위해서는 "REPEATABLE READ CLASS with READ COMMITTED INSTANCES"으로 변경해 주시면 됩니다. 관련한 자료를 아래와 같이 첨부하며, 해당 내용은 온라인 메뉴얼에서 확인하실 수 있습니다.

    CUBRID가 지원하는 격리 수준

    격리 수준 이름

    설명

    SERIALIZABLE (6)

    모든 동시성 관련한 모든 문제들(더티 읽기, 반복 불가능한 읽기, 유령 읽기)이 발생하지 않는다

    REPEATABLE READ CLASS with 
    REPEATABLE READ INSTANCES
     (5)

    트랜잭션 T1이 테이블 A를 조회하는 중에 다른 트랜잭션 T2가 테이블 A의 스키마를 갱신할 수 없다.
    트랜잭션 T1이 특정 레코드를 여러 번 조회하는 중에, 다른 트랜잭션 T2가 삽입한 레코드 R에 대한 유령 읽기를 경험할 수 있다.

    REPEATABLE READ CLASS with 
    READ COMMITTED INSTANCES

    (or CURSOR STABILITY) (4)

    트랜잭션 T1이 테이블 A를 조회하는 중에 다른 트랜잭션 T2가 테이블 A의 스키마를 갱신할 수 없다.
    트랜잭션 T1이 레코드 R을 여러 번 조회하는 중에, 다른 트랜잭션 T2가 갱신하고 커밋한 R' 읽기(반복 불가능한 읽기)를 경험할 수 있다.

    REPEATABLE READ CLASS with 
    READ UNCOMMITTED INSTANCES
     (3)

    격리 수준 디폴트 값.
    트랜잭션 T1이 테이블 A를 조회하는 중에, 다른 트랜잭션 T2가 테이블 A의 스키마를 갱신할 수 없다.
    트랜잭션 T1이 다른 트랜잭션 T2가 갱신한 후 커밋하지 않은 레코드 R' 읽기(더티 읽기)를 경험할 수 있다.

    READ COMMITTED CLASS with 
    READ COMMITTED INSTANCES
     (2)

    트랜잭션 T1이 테이블 A를 여러 번 조회하는 중에, 다른 트랜잭션 T2가 스키마를 갱신하고 커밋한 테이블 A' 읽기(반복 불가능한 읽기)를 경험할 수도 있다.
    트랜잭션 T1이 레코드 R을 여러 번 조회하는 중에, 다른 트랜잭션 T2가 갱신하고 커밋한 R' 읽기(반복 불가능한 읽기)를 경험할 수 있다.

    READ COMMITTED CLASS with 
    READ UNCOMMITTED INSTANCES
     (1)

    트랜잭션 T1이 테이블 A를 여러 번 조회하는 중에, 다른 트랜잭션 T2가 스키마를 갱신하고 커밋한 테이블 A' 읽기(반복 불가능한 읽기)를 경험할 수도 있다.
    트랜잭션 T1이 다른 트랜잭션 T2가 갱신한 후 커밋하지 않은 레코드 R' 읽기(더티 읽기)를 경험할 수 있다.


  1. No Image notice by admin 2024/04/23 by admin
    Views 49 

    CUBRID 사용자를 위한 DBeaver 도구 출시 안내

  2. SQLGate for CUBRID 영구 무료 라이선스 제공

  3. 데이터가 존재하는 테이블 내 필드의 데이터 타입 변경이 가능한가요?

  4. DBCP 관련 문제 때문에 질문 드립니다.

  5. PHP에서 CUBRID 모듈이 로드 되지 않습니다.

  6. SELECT 시, 필드 값의 대소문자 구분 없이 조건 검색 가능할까요?

  7. VC 2005 에 가장 적합한 api 가 어떤것인가요?

  8. DBCP+OID관련 답변감사합니다.

  9. Nginx-PHP-Cubrid 연동시 Cubrid 확장 모듈 로딩 불가 문의 입니다.

  10. OODB특성을 사용하기 위해 DBCP를 포기하는게 적당할까요?

  11. DBCP + OID사용하기

  12. Windows 7 64bit에서 ODBC Driver가 등록되지 않습니다.

  13. MS949를 UTF-8 변경 방법

  14. 오류(연결을 얻을수 없습니다.)

  15. [해결됨] 3.0 -> 3.1 이전중에 문제가 발생해서 현재 업무 마비상태 입니다.

  16. CUBRID Manager 에서 기본설정 -> 질의 편집기 옵션 -> UTF8로 변경방법 알려주세요!

  17. Window Crubrid 설치 후 uninstall시에 트레이 아이콘을 명령어로 종료시킬 수 있는 방법이 있나요?

  18. dba 암호 변경 또는 확인방법

  19. 큐브리드 날짜 함수 Now() 문의

  20. 백업한 DB를 다른 이름의 DB로 풀고 싶을때....

  21. cubrid Exception 문의

  22. 매니저 질의 편집기 글자색깔 문의 드립니다

Board Pagination Prev 1 ... 148 149 150 151 152 153 154 155 156 157 ... 200 Next
/ 200

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales