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

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[174] [팁] UpdateMode 속성
타락천사 [rain622] 7234 읽음    2001-08-20 13:26
안녕하세여..타락임다..ㅠㅠ

TQuery 와 TTable 의 속성중 UpdateMode 가 있슴다.
이넘이 무얼하는 넘이며, 어떨때 쓰여지고 어떻게 쓰는지 말씀드리져..--

데이터베이스에 변경 사항들을 저장하는 과정은 클라이언트 데이터셋의 ApplyUpdates 메소드를 호출할 때 발생함다.(코드에서 호출하지 않아도, 내부적으로 호출됩니다) 관련된 DataSet 은 클라이언트 데이터셋을로부터 받은 변경 로그를 순환하면서 필요한 경우에 SQL의 Insert, Update, Delete 문장을 처리함다.(TTable을 예제로 생각하세요) 그런 다음, 실행을 위해 이러한 문장을 데이터베이스 서버에 전달하게 된다. UpdateMode의 적절한 사용은 데이터베이스상의 삽입, 삭제, 변경의 속도를 증가시켜 줄 수 있습니다.

UpdateMode 속성은 업데이트가 이루어질 때 질의어의 where 절이 어떻게 생성되는지 제어함다. 다음은 예제 질의어 "SELECT * FROM DEPARTMENT" 에 대해 성성 가능한 경우를 나열한 겁니다.

1. upWhereAll
데이터셋의 모든 필드는 UPDATE 나 DELETE 문을 가지고 WHERE 절에 추가된다. 필드가 비어 있다면 데이터셋은 HEAD_DEPT IS NULL 과 같은 문장이 생성될 것이다. 그렇지 않을 경우, HEAD_DEPT = 120 과 같이 생성된다. 여기서 120 은 HEAD_DEPT의 원래 값이 된다. 이 접근 방법은 다른 유저가 레코드를 변경할 경우, 데이터베이스 서버가 원래 값을 찾지 못하고 레코드가 데이터셋 프로바이더의 다른 유저에 의해 변경될 레코드를 가리키는 에러 코드에 추가될 것이다.

2. upWhereChanged
이 모드는 덜 복잡한 UPDATE와 DELET WHERE 절을 생산한다. 오직 키 필드와 그러한 필드들이 변경된 것으로 표시된다. 여전히 병렬적 처리에 대한 문제점을 검출된다. 누군가가 질의어가 실행되기 전에 똑 같은 필드를 업데이트한다면 생성된 SQL문은 아무런 레코드도 변경하지 못한다. 왜냐하면, 레코드는 질의어의 WHERE 문을 충족시켜 주지 못하고, 데어터셋은 다른 유저에 의해 레코드가 변경된 에러 로그를 출력하기 때문이다.

3. upWhereKeyOnly
병렬적 에러 검사없이도 데이터를 업데이트하는 가장 빠른 방법은 오직 키필드만으로 처리하는 경우이다. 이 필드는 테이블의 주 키가 된다. 이 필드는 WHERE 절에 포함된다. 예에서도 레코드가 수정되었다면 데이터셋은 UPDATE DEPARTMENT SET WHERE DEPT_NO = 100 을 생산하고, 레코드가 삭제되면 DELETE FROM DEPARTMENT WHERE DEPT_NO = 100 을 방생시킨다 주 키 필드의 값들은 거의 변경되지 않고, 데이터가 데이터베이스 제한 조건을 거스리지 않으며, 업데이트가 성공적이라는 것을 보장한다. 유저 A가 데이터베이스 레코드를 수정하고 유저 B가 똑같은 레코드에 수정을 가하면 모든 업데이트는 업데이트되는 순서에 상관없이 모두 성공적으로 이루어지게 된다. 마지막 업데이트가 성공적이 된다.


즐푸하세여..

타락천사..ㅠㅠ 

+ -

관련 글 리스트
174 [팁] UpdateMode 속성 타락천사 7234 2001/08/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.