17.05 - 行パーティション結合インデックスを持つテーブルを更新するためのルール - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Release Date
2021年1月
Content Type
プログラミング リファレンス
Publication ID
B035-1146-175K-JPN
Language
日本語 (日本)
  • 基本テーブルの行を挿入または更新しようとするUPDATEリクエストで、行パーティションを使用する結合インデックスにインデックス行が挿入される結果となる場合、そのインデックス行のパーティション式の結果は1とそのレベルに定義されたパーティション数の間の値になる必要があります。
  • 基本テーブルの行を挿入または更新するUPDATEリクエストで、行パーティションを使用する結合インデックスのインデックス行が更新される結果となる場合、更新後のインデックス行のパーティション式の結果は1とそのレベルに定義されたパーティション数の間の値になる必要があります。
  • 基本テーブルの行を更新すると、必ずその基本テーブルで結合インデックスへの挿入または更新が起きるわけではありません。たとえば、CREATE JOIN INDEX文でWHERE句を指定して、WHERE句の条件に一致する行だけがインデックスに挿入されるスパース結合インデックスを作成できます。結合インデックスの行が更新され、更新後にWHERE句の条件に一致しなくなる場合は、その行はインデックスから削除されます。このアクティビティのプロセスは次のとおりです。
    1. システムは、行の更新後にWHERE句の条件についてその真理値を確認します。
      条件の結果 説明
      FALSE システムはスパース結合インデックスから行を削除します。
      TRUE システムは、スパース結合インデックスで行を維持し、段階bに進みます。
    2. システムは、更新された行でパーティション式の新しい結果を評価します。
      パーティション式 Result
      • nullと評価される場合、または
      • CASE_NでもRANGE_Nでもない式の場合
      行の1から65535までの値になりません。

      システムはリクエストをアボートします。基本テーブルまたはスパース結合インデックスを更新せずに、エラーを返します。

      • 値と評価される場合、および
      • CASE_NでもRANGE_Nでもない式の場合
      行の1から65535まで。

      システムは適切なパーティションに行を格納し、リクエストの処理を続行します。そのパーティションは、行が以前のパーティションと異なる場合があります。

  • 文字パーティションで定義されたテーブルの行を更新するとき、MULTINATIONALまたはCHARSET_COLLのいずれかの、文字のパーティション化を使った非圧縮結合インデックスが定義されていて、結合インデックスが作成されてから照合順序の定義に変更があった場合、データベースはテーブル内の行の更新を試みるリクエストをアボートし、更新によって結合インデックスで行が変更されたかどうかに関係なく、要求元にエラーを返します。
  • 非圧縮結合インデックスのパーティション式が、Unicode文字式またはリテラルを伴い、テーブルまたは結合インデックスが定義されたときに有効だったコード ポイントとは一致しないUnicodeコード ポイントを持つリリースにまでシステムが戻されると、データベースはテーブル内の行の更新の試みをアボートし、要求元にエラーを返します。
  • 行パーティションを使用する結合インデックスにインデックス行が挿入される結果となり、そのインデックス行のパーティション式の結果が、1とそのレベルに定義されたパーティション数の間の値にならない基本テーブルの行は更新できません。
  • 行パーティションを使用する結合インデックスでインデックス行の更新が行なわれる結果となり、更新後のインデックス行のパーティション式の結果が、1とそのレベルに定義されたパーティション数の間の値にならない基本テーブルの行は更新できません。