次に示す手法は、CURRENTテンポラル トランザクションの同時並行性に付随する、潜在的な逐次性の問題を回避するために使用できます。
- 少なくとも1つのCURRENT VALIDTIMEテンポラルSQLを使用して同一の行のセットを読み取る、または変更すると考えられる複数のアプリケーションまたはトランザクションを同時に実行しない。このようなアプリケーションとトランザクションは、必ず1つずつ順番に実行します。
- 変更対象のテンポラル テーブルに対して、先行的にテーブル レベルのロックを適用する。このようなロックは、トランザクションの開始時点で適用する必要があります。これには、ロック操作を実行しないSQLが発行される前に、"LOCKING TABLE FOR WRITE"修飾子を使用するBT/ETトランザクション、またはANSIトランザクションが必要になります。テーブル レベルのロックを適用する操作だけでは十分とはいえません。これは、テンポラル テーブルに対するロックを実際に獲得するよりも、対象行の特定に使用するタイムスタンプ値が前になることがあるためです。
- CURRENT VALIDTIMEではなく、次に示すように、変更SQL内で明示的にPAを指定したSEQUENCED VALIDTIMEテンポラル修飾子を使用する。
SEQUENCED VALIDTIME PERIOD (TEMPORAL_DATE/TEMPORAL_TIMESTAMP, UNTIL_CHANGED)
この手法には、次に示す制限があることに注意してください。- 変数のPAをセッション レベルで指定することはできません。そのため、PAを指定したSEQUENCED VALIDTIME修飾子は、文レベルを対象にする必要があります。これには、Teradata Databaseと対話するアプリケーションに対する変更が必要になることがあります。
- SEQUENCED VALIDTIME修飾子では、内部結合と同等の結合のみがサポートされます。そのため、その他の形式の結合を使用するアプリケーションでは、同時並行性問題を回避するための他の選択肢を使用する必要があります。