Q&A

  • 오라클 테이블 Lock 걸기
델파이로 프로그램을 개발하고 있읍니다.

특정 프로세스를 시작할때  오라클 테이블을 Lock 을 걸어
프로세스 진행중에는  다른 사람이  같은 테이블에 업데이트, 인서트
작업을 못하게 하고
프로세스가 끝나면 다시 Lock 을 해제할려고 합니다.

오라클 테이블을 Lock  을 걸고 해제하는것을  델파이 코딩으로
어떻게 구현하는지 좀 알려 주십시요...
부탁드립니다......  간략한 샘플소스를 올려주시면 더더욱 감사^^
4  COMMENTS
  • Profile
    mrdelphi 2004.09.04 19:49
    허접 답변하나 드리겠습니다.

    오라클 안쓰본지 너무 오래되서 기억이 가물가물하네요

    혹시 특정프로세스란게 테이블을 SQL Select명령으로 특정값을 가져온다던지하는 명령이라면... select for update를 이용하시면 될듯하구요. select해 오는 동안은 잠시 Lock이 걸리는걸로 기억합니다. 물론 Select가 끝나면 자동으로 Lock이 풀리구요...

    그리고 아래분의 트랜잭션은 Lock의 의미와는 조금 다른듯하네요. 저도 안해본지 너무 오래되서...

    여러개의 Data를 Insert, Update, Delete 등을 하다가 하나라도 실패할경우 트랜잭션 시작부터 실패한 명령을 모두 취소(Rollback)하고, 여러개의 명령이 성공할때는 모두 적용(Commit)하는것으로 기억하네요...

    허접답변이였습니다.

  • Profile
    황성욱 2004.09.03 22:29
    트랜잭션을 써서 하면 되지 않을까 싶네요.

    StartTransaction, Commit, Rollback을  사용하면 될듯합니다.

    델파이에서 F1 치고 StartTransaction으로 함 찾아보세요.

    procedure TForm1.ApplyButtonClick(Sender: TObject);

    begin
      with CustomerQuery do
      begin
      Database1.StartTransaction;
        try
          ApplyUpdates; {try to write the updates to the database};
          Database1.Commit; {on success, commit the changes};
        except
          Database1.Rollback; {on failure, undo the changes};
        raise; {raise the exception to prevent a call to CommitUpdates!}
        end;
      CommitUpdates; {on success, clear the cache}
      end;

    end;
  • Profile
    김용렬 2004.09.04 02:51


       이 애기는 다른데서도 들었는데요...
       정확히 이해를 못하겠어요.... Help  보아도 이해가 안되요...
       제가 무지 초짜라~~~

       StartTransaction 이 실행되면 Lock 이 걸리는건가요?

       죄송스럽지만 조목 조목 설명좀 부탁 드립니다.
  • Profile
    황성욱 2004.09.04 22:25

    음 테스트 함 해보셔여.

    db.startTransaction;
    try
       인서트문 1(테이블 명 : tb_sample);
       업데이트문(테이블 명: tb_sample2);
       db.commit;
    except
       db.rollback;

    테스트 계획.
    1. 업데이트문에 break point를 잡는다.
    2. 프로그램을 Break Point까지 실행한다.(인서트문 1 실행)
    3. sql plus 로 tb_sample를 select,insert,update 테스트.
    4. 프로그램을 진행시켜 Commit이나 rollback을 실행
    5. sql Plus로 tb_sample를 select,insert,update 테스트.

    ^^ 참고 IF NOT db.InTransaction Then --트랙잭션이 검사.
    • 장태원
    • 2004.09.03 23:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_Apine
      2004.09.04 02:08
      안녕하세요  ^^; 돈이입니다... 메일에서 HTML를 첨부로 보낼때 어떻게 하냐를 물어보시는거...
    • 김용렬
    • 2004.09.03 21:31
    • 4 COMMENTS
    • /
    • 0 LIKES
    • mrdelphi
      2004.09.04 19:49
      허접 답변하나 드리겠습니다. 오라클 안쓰본지 너무 오래되서 기억이 가물가물하네요 혹시 특정프로...
    • 황성욱
      2004.09.03 22:29
      트랜잭션을 써서 하면 되지 않을까 싶네요. StartTransaction, Commit, Rollback을  사용하면...
    • 김용렬
      2004.09.04 02:51
         이 애기는 다른데서도 들었는데요...    정확히 이해를 못하겠어요.... Help&...
    • 황성욱
      2004.09.04 22:25
      음 테스트 함 해보셔여. db.startTransaction; try    인서트문 1(테이블 명 : tb_sample...
    • 강인규
      2004.09.03 23:12
      쓰시는 버퍼뒤에 #13#10 두바이트를 추가해주시면 될것 같네요. Writeln함수도 거의 비슷한 원리군요. ...
    • 도룡뇽
    • 2004.09.03 19:37
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 비니
    • 2004.09.03 19:36
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 서기원
      2004.09.03 22:42
      http://www.madchick.com/Default.asp?Page=2&SubPage=8&3thPage=2 을 참조하세요..
    • 비니
      2004.09.06 21:01
      tlb에서 property를 추가하고 (aaa라는 이름으로 추가했다면) function Get_aaa: WideString; begin &...
    • 김우영
    • 2004.09.03 19:35
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 박성준
      2004.09.04 05:36
      안녕하세요? 박성준입니다. License를 얻으셔야하는것아닌가요? 델파이의 License가 끝났다라는건가요? L...
    • 김우영
      2004.09.04 09:41
      컴포넌트 만들때 License 얻으라는 메세지가 안나오던데... License 때문인지 컴포넌트를 만들어서 ...
    • 박성준
      2004.09.04 10:49
      안녕하세요? 박성준입니다. 제생각입니다만... 컴포넌트도 델파이에 종속해있는것이므로 License를 얻어...
    • 한상훈
    • 2004.09.03 12:07
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 착한천사
      2004.09.04 02:28
      착한천사 김경록입니다.. TreeNode를 사용하신다니.. 그 용도에 따라서, 어떤 불이익이나 이익을 따지...
    • 한상훈
      2004.09.04 10:44
      제 질문의 경우는 한번에 전체트리를 모두 처리할 경우입니다. 개인적으로 갈등하는 부분은 재귀호출...
    • 이중철
      2004.09.03 20:57
      재귀함수의 큰 장점은 코드가 적어지고 직관적으로 알수 있다는 것이고 단점은 For문 보다 속도가 늦다는 ...
    • 홍성락
      2004.09.03 18:46
      hsr////////////////////////////////////////////////////////////// 재귀호출는 자신(함수)을 직/간접...
    • 모영철
      2004.09.03 18:38
      제가 트리뷰를 잘몰라서 그런데.. 두가지 예는 다른 코딩 아닌가 싶은데요.. 적으신 재귀호출의 예는...
    • 정수지
    • 2004.09.03 01:27
    • 3 COMMENTS
    • /
    • 0 LIKES
    • nilriri™
      2004.09.03 05:59
      Ctrl + F12를 눌러서. .dpr   (프로젝트 파일)을 열어서.. Application.Run;  이...
    • 남양원
      2004.09.03 02:00
      Project Option 부분에서 Forms탭에서 Auto-create Forms에서 메인폼만 남기시고 다른 폼들을 Availabl...
    • 장덕곤
      2004.09.03 05:17
      그리고 제일먼저생성하시고자하는폼을 제일 위로 이동하시믄 됩니다... PS 수지님 간만입니다.ㅋㅋ
    • JW Park
    • 2004.09.02 22:59
    • 3 COMMENTS
    • /
    • 0 LIKES
    • mrdelphi
      2004.09.04 20:06
      프로그래밍기술을 처음해보시는분이라면 다른분들 말씀대로 서점에서 아~~ 쉽구나하는 느낌을 받는 책으...
    • 주정호
      2004.09.03 17:18
      다른 분들이 추천하는 델파이 책을 참조하시고, 더불어 다음과 같은 전산관련 전공서적을 필독하시는게 좋...
    • 석주현
      2004.09.03 01:33
      처음 시작하신다면 서점에 가셔서 자신이 봤을때 아 이렇구나 하는 감이 빨리 오는 책이 좋다고 생각합...
    • 김영대
      2004.09.03 01:21
      제 홈페이지( http://www.howto.pe.kr )에 예제가 있습니다 Delphi Tip & Trick 에서 "실행시 component...
    • 스머프
    • 2004.09.02 18:47
    • 2 COMMENTS
    • /
    • 0 LIKES
    • nilriri™
      2004.09.03 06:16
      이 정도면 원하는 결과가 충분히 나올수 있을것 같습니다. 우선 panel을 한 놓으시고.. 리치 에디터를 ...
    • 김영대
      2004.09.03 01:05
      // UNDO 버퍼를 이용해서 트릭을 써봤습니다 // 하지만 undo 버퍼를 사용하므로 사용자가 Ctrl+Z 를 누르...
    • 김재훈
    • 2004.09.02 12:57
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김형균
    • 2004.09.02 03:43
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 황성욱
      2004.09.03 22:39
      ^^ 초보 답변 들어갑니다. INSERT    INTO     테이블명 [컬...
    • 펭귄
      2004.09.02 04:04
      저도 초보지만 insert 할 때 insert할 필드명을 values 앞에 명기하여 나열할 경우에는 나열한 순서대로 ...
    • 김길남
    • 2004.09.02 02:22
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 박운선
    • 2004.09.02 02:21
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박운선
      2004.09.02 23:23
      ip works 라는 프로그램에 snmpv2까지지원하더군요... v5는 v6은 snmp v3까지 지원하는것 같구요.. 어렵...
    • 이중철
      2004.09.03 02:15
      음 Open이라고 되어 있네요 이건 보통 데이터셋 으로 Select할때 쓰는 방법이고 Insert, delete또는 upda...
    • 뮤젤
    • 2004.09.01 21:42
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 박상기
      2004.09.03 10:54
      쓰고 계시는 JVCL의 버젼이 어떻게 되는지 먼저 얘기하시기 바랍니다.
    • 뮤젤
      2004.09.04 01:04
      관심을 보여주셔서 정말 감사합니다. 버전은 2.1 패치 버전입니다.
    • 김동민
    • 2004.09.01 20:49
    • 0 COMMENTS
    • /
    • 0 LIKES