Kori 8월 18일, 2022에 포스트됨 공유하기 8월 18일, 2022에 포스트됨 Docwiki에 있는 "Change Views API Support"을 번역한 글(최종 번역일: 2022년 8월 18일) << 위로 가기: 체인지 뷰스 (Change Views) 주제 체인지 뷰스 API는 확장된 SQLVAR 구조인 (해당 SQLIND 멤버를 새로 해석한) XSQLVAR를 통해 지원된다. 검토를 하려면, 개발자가 XSQLVAR.SQLIND 안에 변수 하나를 두고 그곳에 포인터를 위치시키고 NULL의 상태를 요청(request)한다. 쿼리를 실행하면, 인터베이스는 반환하는 행(row)의 해당 컬럼 값이 NULL이 아닌 경우에 0을 NULL 인 경우에는 -1을 이 포인터에 넣는다. 새 해석에 따르면, 이중(dual) 개념인 NULL 상태와 CHANGE 상태는 해당 SQLIND 멤버 변수 안에서 겹친다. 해당 SQLIND 변수에서 가장 낮은 비트(bit)들은 컬럼 변경 표시자로 쓰도록 예약되어 있다. Bit 0은 INSERT; Bit 1은 UPDATE; Bit 2는 DELETE; Bit 3은 CHANGE를 가리킨다. NULL 상태를 확인하려면, 개발자는 SQLIND를 확인 할 때, -1인지를 확인하지 말고 0보다 작은지를 확인해야 한다. SQLIND 주소에 0 또는 0 보다 큰 값이 들어 있으면 NULL이 아닌 값이라는 표시이다. NOT NULL NULL 변경 상태 SQLIND = 0 SQLIND = -1 체이지 뷰스와 구독(subscription)이 사용되지 않았던 예전의 SQLIND에서 반환하는 값. 여기에는 변경 상태가 정의되지 않는다. SQLIND >= 0 SQLIND < 0 새 SQLIND에서 반환하는 값. 변경 상태가 제시될 "수"도 있고 테스트 할 수 있다. SQLIND > 0 SQLIND < -1 변경 상태가 제시된다. 일단 SQLIND 값에 변경 상태가 들어있다고 결정된 경우, 구체적인 상태를 테스트하기 전에 미리 SQLIND_NULL 비트가 있을 가능성을 깨끗이 해소해야 한다. 아래에 있는 SQLIND_xxxxxx 정의는 <ibase.h>에 들어잇다. 이러한 정의를 대상으로 다양한 비트 OR 연산을 수행하여 관심있는 변경 상태를 테스트할 수 있다. SQLIND 값 변경 상태 SQLIND_CHANGE_VIEW 해당 컬럼은 <same> 값이다; 이 컬럼의 값은 변경되지 않았다. SQLIND_CHANGE_VIEW | SQLIND_CHANGE <unknown> 이다. 즉 해당 컬럼의 값이 변경 여부를 알 수 없다. SQLIND_CHANGE_VIEW | [ SQLIND_CHANGE ] | { SQLIND_INSERT | SQLIND_UPDATE | SQLIND_DELETE } SQL 작동(operation)들의 조합 몇가지가 해당 컬럼의 값을 변경했다. SQLIND_CHANGE_VIEW는 태그 비트(bit)로써 변경 상태가 존재하는 지 여부를 알려준다. 나머지 정의들은 FOR ROW 절에 있는 옵션들인 CHANGE, INSERT, UPDATE, DELETE에 각각 이름에 맞게 대응된다. CHANGE 옵션은 <unknown> 변경 상태를 일으킬 수 있는데 이 옵션에서는 어느 컬럼이든 변경이 감지되기만 하면 무조건 변경된 행(row)이 바로 반환되기 때문이다. 이 경우 변경이 발생한 컬럼의 값들은 분명한 상태를 반환하지만, 그 외의 컬럼들은 <unknown> 상태를 반환한다. 구독에 의해 변경된 데이터는 해당 구독에서 나중에 관찰(observe)하면 보이지 않는다. 이것은 양방향 복제 상황에서 체인지 뷰스가 구성 요소로 적용될 가능성을 고려했기 때문이다. 복제 쌍에서 발생된 변경에 대해 어느 한쪽에서 다른 쪽에 업데이트하고, 그 다른쪽에서 그 복제를 다시 반대 방향으로 복제하는 것은 바라지 않는다. 다음 단계 (Advance To) 체인지 뷰스 SQL 언어 지원 체인지 뷰스 SQL 언어 지원 (Change Views SQL Language Support) 인용하기 이 댓글 링크 다른 사이트에 공유하기 더 많은 공유 선택 사항
Recommended Posts
이 토의에 참여하세요
지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.