CURRENT DMLを変更すると、並行トランザクションにおける逐次性の問題が発生することがあります。これらの問題を避ける方法の詳細は、CurrentテンポラルDMLに付随する潜在的な同時並行性の問題を参照してください。
有効時間を含むテーブルでは、現在行が削除対象となります。追加の検索条件は、これらの行にのみ適用されます。valid-time列またはtransaction-time列に対するWHERE句の条件、または結合のON条件を指定できます。
CURRENT DELETEは現在行にのみ作用します。TEMPORAL_TIMESTAMPまたはTEMPORAL_DATEと重ならないvalid-time期間を含む将来行は、削除されません。
対象行のcurrent削除操作についての説明を、次の表に示します。
テーブルの種類 | 開始境界 | 結果 |
---|---|---|
valid-timeテーブル。valid-time列の要素型はDATE | TEMPORAL_DATEと等しい | 対象行が物理的に削除されます。 |
TEMPORAL_DATEより小さい | 対象行の有効期間が変更されます(終了境界値をTEMPORAL_DATEに設定)。 | |
valid-timeテーブル。valid-time列の要素型はTIMESTAMP | TEMPORAL_TIMESTAMPと等しい | 対象行が物理的に削除されます。 |
TEMPORAL_TIMESTAMPより小さい | 対象行の有効期間が変更されます(終了境界値をTEMPORAL_TIMESTAMPに設定)。 | |
二重テンポラル テーブル。valid-time列の要素型はDATE | TEMPORAL_DATEと等しい | 対象行がトランザクション時間でクローズされます。つまり、論理的に削除されます。 |
TEMPORAL_DATEより小さい | 対象行がトランザクション時間でクローズされます。古い行のコピーが挿入されます。このコピーの有効期間の開始境界値はクローズされた行と同じ値に設定され、終了境界値はTEMPORAL_DATEに設定されます。 | |
二重テンポラル テーブル。valid-time列の要素型はTIMESTAMP | TEMPORAL_TIMESTAMPと等しい | 対象行がトランザクション時間でクローズされます。つまり、論理的に削除されます。 |
TEMPORAL_TIMESTAMPより小さい | 対象行がトランザクション時間でクローズされます。古い行のコピーが挿入されます。このコピーの有効期間の開始境界値はクローズされた行と同じ値に設定され、終了境界値はTEMPORAL_TIMESTAMPに設定されます。 |