ttCachePropagateFlagSet

このプロシージャを使用すると、Oracle Databaseに対する現在のトランザクションにおいてコミットされた更新(DML文の実行結果)の伝播を無効にできます。 フラグをゼロに設定した後のDML文実行による更新は、バックエンドのOracle Databaseに伝播されることはありません。そのため、これらの更新はTimesTenデータベースにのみ存在します。その後、フラグをリセットすることでDML文の伝播を再度有効にできます。

必要な権限

このプロシージャには、CACHE_MANAGER権限が必要です。

TimesTen ScaleoutおよびTimesTen Classicでの使用

このプロシージャはTimesTen Classicでサポートされていますが、TimesTen Scaleoutではサポートされません。

関連ビュー

このプロシージャには関連ビューはありません。

構文

ttCachePropagateFlagSet(CommitsOn)

パラメータ

ttCachePropagateFlagSetには、次のパラメータがあります。

パラメータ 説明

CommitsOn

TT_INTEGERNOT NULL

0の場合、更新がOracle Databaseに送信されないようにするフラグを設定します。トランザクションが終了するまで、またはプロシージャが1に設定されるまで、このフラグの設定は変更されません。

1の場合、更新がOracle Databaseに送信されます。

結果セット

ttCachePropagateFlagSetは結果を返しません。

ノート

  • このプロシージャは、キャッシュ操作でのみ使用可能です。

  • 1つのトランザクションの中でttCachePropagateFlagSetの値が複数回有効になった場合、トランザクションの一部のみがOracle Databaseに伝播されます。

  • ttCachePropagateFlagSetは、FLUSHLOADREFRESHおよびUNLOADなどの他のキャッシュ・グループ処理のいずれかとして、アプリケーションが同じトランザクション内で使用できる唯一の組込みプロシージャです。

  • コミットまたはロールバックの後、伝播フラグはリセットされます。

  • このプロシージャを使用する場合、AutoCommitを無効にする必要があります。無効にしない場合は、プロシージャを呼び出した後でトランザクションが終了するため、Oracle Databaseへの伝播が再度有効になります。

この例では、autocommitを無効に設定して、コミットの後に伝播フラグが無効から有効に切り替わらないようにします。ttCachePropagateFlagSetを呼び出して伝播を無効にします。oratt.writetabのTimesTenディテール表に1行が挿入されます。その後、ttCachePropagateFlagSet組込みプロシージャを呼び出してフラグを1に設定することで、伝播は再度有効になります。

Command> set autocommit off;
         call ttCachePropagateFlagSet(0);
         INSERT INTO oratt.writetab VALUES (103, 'Agent');
1 row inserted.
Command> COMMIT;
Command> SELECT * FROM oratt.writetab;
< 100, Oracle >
< 101, TimesTen >
< 102, Cache >
< 103, Agent >
4 rows found.
Command> call ttCachePropagateFlagSet(1);

Oracle Databaseのすべての行を選択する場合、伝播が無効のときに挿入された行は、Oracleのoratt.writetab表にはありません。

Command> set passthrough 3;
         SELECT * FROM oratt.writetab;
< 100, Oracle >
< 101, TimesTen >
< 102, Cache >
3 rows found.