Teradata Databaseは、以下のシナリオの行パーティション化の基本テーブルおよび行パーティション化の結合インデックスに対して据置きパーティション削除を使用します。
- 行パーティション テーブル
- 行パーティション結合インデックス
削除および行パーティション結合インデックス
基本テーブルから行を削除すると、行パーティション結合インデックスでインデックス行の挿入またはインデックス行の更新が行なわれ、以下の結果になるとします。
- 結合インデックス行のパーティション式のいずれかがnullと評価される、または
- パーティション式がCASE_NでもRANGE_Nでもない式になり、その式の結果が行の1から65535の間の値にならない
この場合、システムはリクエスト(ANSIモード)またはトランザクション(Teradataモード)をアボートします。挿入や更新を行なわずに、それぞれエラーまたは失敗を返します。
基本テーブルから行を削除すると、必ずその基本テーブルで結合インデックスが削除されるわけではありません。たとえば、CREATE JOIN INDEX文でWHERE句を指定して、WHERE句の条件に一致する行だけがインデックスに挿入されるスパース結合インデックスを作成できます。結合インデックスの行が更新され、更新後にWHERE句の条件に一致しなくなる場合は、その行はインデックスから削除されます。
このアクティビティのプロセスは次のとおりです。
- システムは、行の更新後にWHERE句の条件についてその真理値を確認します。
条件 説明 FALSE システムは、スパース結合インデックスから行を削除します。 TRUE システムは、スパース結合インデックスで行を維持し、段階bに進みます。 - システムは、更新された行でパーティション式の新しい結果を評価します。
パーティション式 説明 - nullと評価される場合、または
- 式がCASE_NまたはRANGE_Nでない
結果は、行の1から65535までの値になりません。 この場合、システムはリクエスト(ANSIモード)またはトランザクション(Teradataモード)をアボートします。基本テーブルまたはスパース結合インデックスを更新せずに、それぞれエラーまたは失敗を返します。
- 値と評価される場合、および
- 式がCASE_NまたはRANGE_Nでない
結果は、行の1から65535までの値になります。 システムは適切なパーティションに行を格納し、リクエストの処理を続行します。そのパーティションは、行が格納されたパーティションと異なる場合があります。
パーティション式の評価中にゼロ除算エラーなどの式評価エラーが発生する可能性があります。そのようなエラーへのシステム応答は、実際のセッション モードにより異なります。
セッション モード | 式評価エラーがロールバックする作業単位 |
---|---|
ANSI | アボートされたリクエストを含んでいるリクエスト |
Teradata | アボートされたリクエストを含むトランザクション。 |
式のエラーで有効な行の挿入が妨げられないようパーティション式を定義します。