systime_period_adj - テンポラル SYSTEM_TIME 期間の調整データベース構成パラメーター

このデータベース構成パラメーターは、開始タイム・スタンプより前の日時の終了タイム・スタンプを持つシステム期間テンポラル表の履歴行が生成されたときに取るアクションを指定します。

システム期間テンポラル表の同じ行の更新を試みるときに 2 つの異なるトランザクションが競合する場合にこのことは起こり得ます。 また、システム・クロックを調整した結果として生じることもあります。例えば、夏時間調整時間の終わりにシステム・クロックを 1 時間戻す場合などです。

構成タイプ
データベース
適用
  • ローカルとリモート・クライアントを持つデータベース・サーバー
  • クライアント
  • ローカル・クライアントを持つデータベース・サーバー
  • ローカル・クライアントおよびリモート・クライアントを持つパーティション・データベース・サーバー
パラメーター・タイプ
オンラインで構成可能
伝搬クラス
即時
デフォルト [範囲]
NO [NO, YES]

システム期間テンポラル表の行が更新されると、履歴行のデータが現行データであった時間の範囲を示す SYSTEM_TIME 期間を持つ履歴行が生成されます。 行開始列の値は、履歴行のデータが現行データになった時点を示します。 行終了列の値は、履歴行が履歴データになった時点を示します。

以下は、競合する 2 つのトランザクションによってどのように行開始タイム・スタンプより前の日時の行終了タイム・スタンプを持つ履歴行が生成されるかを示す例です。
  1. トランザクション TRA は、システム期間テンポラル表内の更新対象の行の行開始値を、タイム・スタンプ T1 で生成します。
  2. トランザクション TRB は、更新対象の同じ行の行開始値をタイム・スタンプ T2 で生成します (T1 < T2)。
  3. トランザクション TRB は、履歴行を生成し、コミットします。
  4. トランザクション TRA は、その履歴行を生成し、コミットします。
この一連のイベントの後、トランザクション TRA の生成された履歴行では、終了タイム・スタンプが開始タイム・スタンプよりも前になります。
データベース・マネージャーは、生成される履歴行の終了タイム・スタンプが開始タイム・スタンプより常に大きくなるように管理できます。その方法として、タイム・スタンプに矛盾があるときの調整を可能にする場合と、関係するいずれかのトランザクションをロールバックする場合があります。
いいえ
挿入される履歴行の終了タイプ・スタンプが開始タイム・スタンプより小さいときには、タイム・スタンプ値の調整は行われません。 その代わり、履歴行を挿入しようとしているトランザクションは失敗し、エラーが返されます (SQLSTATE 57062、SQLCODE SQL20528N)。 調整を許可しない場合、トランザクションの際に生成される履歴行はすべて終了タイム・スタンプが同じになるので、その終了タイム・スタンプを使用して簡単に識別できます。
はい
タイム・スタンプに矛盾があるときに、システム期間テンポラル表の行開始列値のタイム・スタンプ値、および生成される履歴行の終了タイム・スタンプ値に対して調整が行われます。 この調整は、開始タイム・スタンプより 1 マイクロ秒だけ大きくなるように終了タイム・スタンプが変更する方法で行われます。 これにより、履歴行の終了タイム・スタンプが開始タイム・スタンプの日時より後になるようにします。 調整が行われたことを示すメッセージが返されます (SQLSTATE 01695、SQLCODE SQL5191W)。

タイム・スタンプ調整が不要な場合は、SQLCODE DB20000I が返されます。

アプリケーション・プログラマーは、SQLCODE や SQLSTATE の値を使用して、SQL ステートメントから返されるこれらのタイム・スタンプ値調整関連の戻りコードを処理できます。