3.11 有効時間のサポートを伴う表の作業領域のマージおよびリフレッシュ

有効期間のサポートを伴う表をマージまたはリフレッシュする場合、同一主キー値を持つ行に交差部分が存在する具体的なケースを検討することで、結果の行を判断できます。

2つの行が交差するかどうかを判断するには、WM_OVERLAPS演算子を使用できます。

表3-3に示すvalidTillのケースでは次のようになります。

  • マージ操作の場合、ターゲット作業領域は親作業領域です。

  • リフレッシュ操作の場合、ターゲット作業領域は、指定された作業領域の子作業領域です。

  • 行の交差の性質上、マージ操作またはリフレッシュ操作の前に競合の解消が行われています。(1つのソース行が複数のターゲット行と競合するか、1つのターゲット行が複数のソース行と競合する可能性があります。)

表3-3 validTillの値とマージ操作またはリフレッシュ操作による交差部分の処理結果

validTill値 交差部分の処理結果

ソース行とターゲット行の両方でvalidTill値がDBMS_WM.UNTIL_CHANGED以外である。

ターゲット作業領域で行の交差部分がソース行の交差部分と同一になるように変更される。

ソース行のvalidTill値がDBMS_WM.UNTIL_CHANGED以外であり、ターゲットの値がDBMS_WM.UNTIL_CHANGEDである。

行の交差部分が変更され、その結果、行のvalidTill値がソース行の値と等しくなる。

ソース行のvalidTill値がDBMS_WM.UNTIL_CHANGEDであり、ターゲット行の値がDBMS_WM.UNTIL_CHANGED以外である。

行の交差部分が変更され、その結果、行のvalidTill値がターゲット行の値と等しくなる。

ソース行とターゲット行の両方のvalidTill値がいずれもDBMS_WM.UNTIL_CHANGEDである。

交差部分が変更され、その結果、行のvalidTill値がDBMS_WM.UNTIL_CHANGEDになる。

表3-3では、いずれのケースでもターゲット行の非交差部分は変更されません。ターゲット作業領域にオーバーラップする行がない場合は、特別な考慮事項はありません。追加の変更は行われず、行がそのままマージまたはリフレッシュされます。