トランザクション時間を含むテンポラル テーブルに対する行の追加時や変更時に、システムは自動的にtransaction-time列にタイムスタンプを設定します。このタイムスタンプは、システムがいつ新しい行を認識したか、またはいつ行内の情報を変更したかを示します。
デフォルトでは、transaction-time列に使用するタイムスタンプは、行が挿入または変更された時点で、各AMPがシステム クロックから読み込みます。このドキュメントでは、この値をTT_TIMESTAMPと表記します。
- トランザクション時間を含むテーブルに挿入された行のtransaction-time期間の開始境界値は、自動的にTT_TIMESTAMPに設定されます。
- トランザクション時間を含むテーブルで変更された行のtransaction-time期間の終了境界値は、自動的にTT_TIMESTAMPに設定されます。これにより、いつ行に変更が生じたかの履歴を維持します。
この自動タイムスタンプ設定プロセスでは、同一のロード ジョブに含まれる各行、および同一のトランザクションに含まれる各行に異なるタイムスタンプを生成します。つまり、transaction-time列を含むテーブルに対するすべての変更は、その変更が単一のトランザクションに含まれていたとしても、データベースによって個別に追跡されることになります。たとえば、あるトランザクションが2つの文で構成されていて、一方の文では行を挿入し、もう一方の文では直前に挿入した行を削除するとします。このトランザクションは、履歴行を格納する形でデータベース内に追跡記録を残します。この履歴行はトランザクション時間でクローズされているので、ほとんどのSQLで使用できなくなります。
ある行に単一の変更を加えたことで複数の行がデータベースに自動的に追加される場合には、システムは影響するすべての行に対して同一のTT_TIMESTAMP値を使用します。たとえば、transaction-time列を含むテーブルの行を更新すると、元の行の更新に加えて、1つまたは2つの新しい行が挿入されることがあります。この場合は、すべての行のTT_TIMESTAMPが同じ時刻になります。単一の変更を1つの行に加えることで1つまたは2つの行がテンポラル テーブルに追加される状況の例については、Sequenced更新を参照してください。