ヘッダーをスキップ
Oracle TimesTen In-Memory Database C開発者およびリファレンス・ガイド
リリース7.0
E05164-03
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

更新を監視する表の指定

「XLAの初期化およびXLAハンドルの取得」の説明に従ってXLAを初期化し、xla_handleを取得した後、更新イベントを監視する表またはマテリアライズド・ビューを指定できます。

SYS.XLASUBSCRIPTIONS表を問い合せることによって、ブックマークをサブスクライブする表を確認できます。また、SYS.XLASUBSCRIPTIONSを使用すると、特定の表にサブスクライブしたブックマークを確認することもできます。

ttXlaTableStatusは、DDLイベントをすべてのブックマークにレポートします。DDLイベントには、CREATAB、DROPTAB、CREAIND、DROPIND、CREATVIEW、DROPVIEW、CREATSEQ、DROPSEQ、ADDCOLS、DRPCOLS、TRUNCATE、 SETTBLIおよびSETCOLIトランザクションが含まれています。ttXlaTableStatus は、表に対する挿入、更新および削除を、表にサブスクライブしたブックマークにのみレポートします。

ttXlaTableByName関数をコールして、指定した表またはマテリアライズド・ビューのシステム識別子およびユーザー識別子の両方を取得します。次に、ttXlaTableStatus関数をコールして、表またはマテリアライズド・ビューへの変更を監視するためにXLAを有効にします。

例3.2

この例では、SCOTT.MYDATA表への変更を追跡します。

#define TABLE_OWNER "SCOTT"

#define TABLE_NAME "MYDATA"

SQLUBIGINT SYSTEM_TABLE_ID = 0;

SQLUBIGINT userID;

rc = ttXlaTableByName(xla_handle, TABLE_OWNER, TABLE_NAME,

                      &SYSTEM_TABLE_ID, &userID);

表の識別子を取得すると、ttXlaTableStatus関数を使用して、SCOTT.MYDATA表への変更を検出するためのXLA更新追跡を有効にできます。newstatusパラメータを0(ゼロ)以外の値に設定すると、指定した表に行われた変更がXLAによって追跡されます。

SQLINTEGER    oldstatus;

SQLINTEGER    newstatus = 1;

rc = ttXlaTableStatus(xla_handle, SYSTEM_TABLE_ID, 0,

                      &oldstatus, &newstatus);

oldstatusパラメータは、コール時の表のステータスを示す出力です。

ttXlaTableStatusnewstatusをNULLにし、oldstatusのみを返すことによって、表の現行のXLAステータスを返すことができます。次に例を示します。

rc = ttXlaTableStatus(xla_handle, SYSTEM_TABLE_ID, 0,

                      &oldstatus, NULL);

if (oldstatus != 0)

     printf("XLA is currently tracking changes to table %s.%s\n",

             TABLE_OWNER, TABLE_NAME);

else

     printf("XLA is not tracking changes to table %s.%s\n",

             TABLE_OWNER, TABLE_NAME);