アドホック サブスクリプションと SQL 言語サポート
変更ビュー へ戻る
変更ビューは、アドホック サブスクリプションを使用して、一時ベースでサブスクライブされます。アドホック サブスクリプションは、接続の間に実行されます。ユーザーは、名前付きのサブスクリプションの代わりに、スキーマ オブジェクトに対して直接サブスクライブします。このサブスクリプションは、データベース接続が終了するまで、もしくは、ユーザーが接続中に一時サブスクリプションを無効にするまで、有効です。以下の例では、変更されたデータ ビューをサポートする 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 は移動に対して賃金の調整が付かなかったので、彼の部署の再割り当ては返されないのが分かります。