Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

Recommended Posts

Docwiki에 있는 "Change Views SQL Language Support"을 번역한 글(최종 번역일: 2022년 8월 18일)

<< 위로 가기: 체인지 뷰스 (Change Views)

아래 예문은 체인지 뷰스 (Change Views)를 지원하기 위해 재작성된 ISQL 명령-줄 (command-line) 도구(유틸리티)를 보여준다.

데이터베이스 안에 정의된 구독(subscription)들을 목록으로 표시하려면, SHOW SUBSCRIPTIONS 명령을 사용한다. 특정 구독의 세부 내용을 표시하려면, SHOW SUBSCRIPTION <구독_이름> 명령을 실행한다.

ISQL SHOW SUBSCRIPTION 명령

SHOW SUBSCRIPTIONS;
Subscription Name
===================================================================
SUB_CUSTOMER_DELETES
SUB_EMPLOYEE_CHANGES
SUB_VARIOUS_CHANGES
 
SHOW SUBSCRIPTION sub_employee_changes;
Subscription name: SUB_EMPLOYEE_CHANGES
Owner: SYSDBA
Description: EMPLOYEE 테이블 안에서 발생한 변경 구독
        EMPLOYEE (SALARY, DEPT_NO, EMP_NO)
 
SHOW SUBSCRIPTION sub_customer_deletes;
Subscription name: SUB_CUSTOMER_DELETES
Owner: SYSDBA
Description: CUSTOMER 테이블에서 발생한 삭제 구독
        CUSTOMER FOR ROW (DELETE)
 
SHOW SUBSCRIPTION sub_various_changes;
Subscription name: SUB_VARIOUS_CHANGES
Owner: SYSDBA
Description: 여러 테이블에서 발생한 여러 변경을 구독
        EMPLOYEE FOR ROW (INSERT, UPDATE, DELETE),
        CUSTOMER FOR ROW (INSERT, UPDATE, DELETE),
        SALES FOR ROW (UPDATE),
        DEPARTMENT (LOCATION) FOR ROW (UPDATE)

ISQL SET CHANGES 명령

ISQL에는 SET 진술(statement)들의 모음이 있어서, 표시할(display) 결과 세트를 토글(toggle)할 수 있다. SET CHANGES 표시 토글은 해당 컬럼의 데이터 값과 해당 변경 상태를 옆에 달아서 함께 보여 줄 것인지 아닌 지를 왔다갔다 할 수 있다. <CHANGE> 컬럼은 의사(pseudo) 컬럼이며 여기에는 해당 컬럼의 값을 변경한 DML 진술의 유형이 표시된다. 이 변경 상태 모두는 새 구조인 XSQLDA의 멤버인 XSQLVAR.SQLIND에 의해서 반환된다.

데이터 변경 뷰를 지원하기 위해 인터베이스 SQL (ISQL)에 IS SAME 또는 IS NOT SAME 절이 추가되었다.

ISQL에서 체인지 뷰스를 받아오기 (Retrieving Change Views from ISQL)

<또 다른 사용자가 기존 직원을 다른 부서로 재배치한다. 그리고 또 다른 직원은 급여를 인상한다>
 
SET SUBSCRIPTION sub_employee_changes ACTIVE;
SELECT EMP_NO, DEPT_NO, SALARY FROM EMPLOYEE; 
 
 EMP_NO     DEPT_NO     SALARY
   37         120        50000
   109        600        75000
 
SET CHANGES;
 
SELECT EMP_NO, DEPT_NO, SALARY FROM EMPLOYEE;
 EMP_NO   <change>  DEPT_NO    <change>       SALARY      <change>
 --------           ----------                -----------
 37       <same>    120        <update>       50000       <same>
 109      <same>    600        <same>         75000       <update>
 
COMMIT;

SET SUBSCRIPTION 사용에 대한 자세한 정보는 구독 지정(SET SUBSCRIPTION)에 설명되어 있다.

 

ISQL에서 체인지 뷰스를 위한 SQL 확장 (SQL Extensions for Change Views)

알아둘 점:
이 기능은 인터베이스 XE7 업데이트 1부터 제공된다.

데이터 변경 뷰를 지원하기 위해 인터베이스 SQL (ISQL)에 IS [NOT] {CHANGED | INSERTED | UPDATED | DELETED} 절이 추가되었다. 아래 예문을 참조한다.

IS [ NOT ] UPDATED를 SELECT 쿼리(query) 안에서 사용하기

SET SUBSCRIPTION sub_employee_changes ACTIVE;
SELECT EMP_NO, DEPT_NO, SALARY FROM EMPLOYEE WHERE SALARY IS UPDATED;
 EMP_NO     DEPT_NO           SALARY
 --------   ----------        ----------
 109        600               75000


위 예문의 결과를 보면 EMP_NO=37 직원이 부서를 이동한 것에 대한 행이 반환되지 않았다. 그 이유는 이 직원의 경우 부서만 이동했을 뿐 급여 조정이 없었기 때문이다. IS CHANGED 절을 사용하면 어떤 SQL 동작이든 해당 컬럼에 생긴 변경를 모두 탐지한다.

다음 단계 (Advance To)

 

 


 

 


 


 


2 다음 단계 (Advance To)

이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.