アドホック サブスクリプションと SQL 言語サポート

提供: InterBase

変更ビュー へ戻る

変更ビューは、アドホック サブスクリプションを使用して、一時ベースでサブスクライブされます。アドホック サブスクリプションは、接続の間に実行されます。ユーザーは、名前付きのサブスクリプションの代わりに、スキーマ オブジェクトに対して直接サブスクライブします。このサブスクリプションは、データベース接続が終了するまで、もしくは、ユーザーが接続中に一時サブスクリプションを無効にするまで、有効です。以下の例では、変更されたデータ ビューをサポートする ISQL コマンドライン ユーティリティの改善を示しています。

ユーザーは、そのスキーマ オブジェクト(つまり、基底テーブル)に対して、一時サブスクライブ権限を認可されていなければなりません。

GRANT TEMPORARY SUBSCRIBE

GRANT TEMPORARY SUBSCRIBE の構文

GRANT TEMPORARY SUBSCRIBE[(<column_comma-list>)] ON <table_name> TO <user_name>;
REVOKE TEMPORARY SUBSCRIBE[(<column_comma-list>)] ON <table_name> FROM <user_name>;

ユーザーは、SET SUBSCRIPTION コマンドを発行し、通常、サブスクリプション名の代わりに、基本テーブルの名前を指定します。

RETRIEVING CHANGED DATA VIEWS FROM ISQL

SET SUBSCRIPTION "Employees" ACTIVE;
SELECT NAME, DEPARTMENT, SALARY FROM "Employees";
COMMIT;

<Another user reassigns an existing employee to another department and gives another employee a raise>

SELECT NAME, DEPARTMENT, SALARY FROM "Employees";

 <CHANGE>     NAME     DEPARTMENT      SALARY
  update       joe       sales         50000
  update       mary     finance        75000

SET SAME;

SELECT NAME, DEPARTMENT, SALARY FROM "Employees";

 <CHANGE>      NAME     DEPARTMENT    SALARY
  update       <same>      sales      <same>
  update       <same>      <same>     75000

COMMIT;

SET SUBSCRIPTION "Employees" INACTIVE;

ISQL は、ディスプレイ セットを切り替える SET 文のコレクションを持っています。 SET SAME は、列データ値、<same> の変更ステータス、変更されたデータ値の間で切り替えるトグルを表示します。 CHANGE 列は疑似列で、列の値を変更した DML 文のタイプを表示します。 この変更状態すべてが、新しい XSQLDA 構造体の XSQLVAR.SQLIND メンバーによって返されます。

変更されたデータ ビューに対する最小限のサポートは、次の例のように、IS SAME 句または IS NOT SAME 句を追加した InterBaseSQL によって提供されます:

SELECT クエリでの IS NOT SAME の利用
 <SELECT NAME, DEPARTMENT, SALARY FROM "Employees" WHERE SALARY IS NOT SAME;

 <CHANGE>     NAME     DEPARTMENT     SALARY
  update      mary     finance        75000

Joe は移動に対して賃金の調整が付かなかったので、彼の部署の再割り当ては返されないのが分かります。

次は: