ROWID疑似列
TimesTenでは、表に保存される各行にROWIDと呼ばれる一意のIDが割り当てられます。このrowid (ROWID疑似列と呼ばれる)のデータ型はROWIDです。
TimesTen Scaleoutでは、ROWID疑似列はTimesTen Classicとは異なる意味を持ちます。
TimesTen Scaleoutの場合:
-
TimesTen Scaleoutでは、すべての要素にわたる一意性を確保するために、
ROWIDが使用されます。 -
ROWIDは、行の特定のコピーの識別子です。コピー元の要素が使用可能でないためにそのコピーが使用可能ではない場合は、ROWIDで行にアクセスできません。この場合は、主キーで行にアクセスする必要があります。 -
行の各コピーには異なる
ROWID値があります。このことは、K-safetyが1に設定されている複製分散スキーム、およびK-safetyが2に設定されているすべての表(どのような分散スキームでも)に該当します。この場合、ROWIDベースのアクセスを使用すると、TimesTen Scaleoutは最初のデータ領域のROWIDの値を返します。 -
アプリケーションには
ROWID値を格納せず、これらの値を後で使用するようにしてください。 -
ROWID値は、(データの再分散によって)データの場所が変更された場合、変化することがあります。ttGridAdmin dbDistributeコマンドの詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』の「データベースの分散スキームの設定または変更(dbDistribute)」を参照してください。 -
TimesTen Scaleoutでは、
ROWIDデータ型はサポートされていません。
TimesTen Classicの場合:
-
ROWIDは、
ROWID擬似列を問い合せることで確認できます。 -
ROWIDは(実際の列ではなく)疑似列であるため、データベース領域は必要ありません。ROWIDを更新したり、索引を作成したり、削除することはできません。 -
ROWID値は、表に行が存在する間は保持されます。 -
ROWID値は、リカバリ、バックアップおよびリストア処理を行っても保持されます。ただし、レプリケーションの結果として、またはttMigrateを実行してデータベースから行を移行し、データベースに戻した結果として作成された行のコピー、またはttBulkCpを実行してデータベースから行をコピーし、データベース戻した結果として作成された行のコピーは、元の行とは異なるROWID値になります。
TimesTen Scaleoutの詳細は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』の「データ分散でのROWIDの理解」を参照してください。
TimesTen ClassicのROWIDの詳細は、「式の指定」を参照してください。ROWIDデータ型の詳細は、「ROWIDデータ型」を参照してください。