変更ビュー SQL 言語のサポート

提供: InterBase

変更ビュー へ戻る


以下の例では、変更ビューをサポートする ISQL コマンドライン ユーティリティの改善を示しています。

データベースで定義されているサブスクリプションのリストを表示するには、SHOW SUBSCRIPTIONS コマンドを実行します。 特定のサブスクリプションの詳細を表示するには、SHOW SUBSCRIPTION <name> を実行します。

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: Subscribe to changes in EMPLOYEE table
        EMPLOYEE (SALARY, DEPT_NO, EMP_NO)
 
SHOW SUBSCRIPTION sub_customer_deletes;
Subscription name: SUB_CUSTOMER_DELETES
Owner: SYSDBA
Description: Subscribe to deletes in CUSTOMER table
        CUSTOMER FOR ROW (DELETE)
 
SHOW SUBSCRIPTION sub_various_changes;
Subscription name: SUB_VARIOUS_CHANGES
Owner: SYSDBA
Description: Subscribe to various changes on multiple tables
        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 文のコレクションを持っています。 SET CHANGES ディスプレイ トグルは、変更ステータスを従属表記として持つ列データ値の表示を切り替えます。 <change> 列は疑似列で、列の値を変更する DML 文の型を示します。 この変更状態すべてが、新しい XSQLDA 構造体の XSQLVAR.SQLIND メンバーによって返されます。

ISQL から変更ビューを取得します。

<Another user reassigns an existing employee to another department and gives another employee a raise>
 
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;

変更ビューでの SQL 拡張

メモ: この関数は、InterBase XE7 Update 1 より導入されています。

InterBase SQL では、次の例が示すように、変更ビューに対するサポートを、IS [NOT] {CHANGED | INSERTED | UPDATED | DELETED} 句によって提供しています:

SELECT クエリでの IS [ NOT ] UPDATED の利用

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 オペレーションによる、列の変更を検知します。

次は: