MODIFYとMODIFY PRIMARYに関する一般的なルールは、次の例外を除き、複数レベルの場合にも適用されます。MODIFY PRIMARY句に関する一般的なルールを参照してください。
- PARTITION BYを指定したときに、システムがリクエストを受け入れ、指定されている新しいパーティション式のパーティションになるようにテーブルを変更するのは、以下の場合です。
- テーブルが空である。
- DROP RANGE[L#n]オプションとADD RANGE[L#n]オプションで新しいパーティション式を定義するときに、それらのオプションで、最初または最後以外の範囲を削除せず、少なくとも1つの範囲を残し、結果的に最初と最後になる範囲の間に範囲を追加しない。
さらに、テーブルにマルチレベル パーティションがあり、パーティション式の変更にNO RANGE [OR UNKNOWN]またはUNKNOWNのパーティションの削除が含まれている場合、そのパーティション式は、以前に変更されたことのないパーティション式か、RANGE[OR UNKNOWN]またはUNKNOWNのパーティションの削除によって、各範囲の一連の内部パーティション番号の中でスキップされる番号が出ないような変更しかされていないパーティション式でなければなりません。
- Teradata Databaseは、テーブルまたは結合インデックスの新しいパーティション式のセットから新しいテーブル レベル パーティションのCHECK制約を取り込み、以前のパーティションのCHECK制約をその新しい制約に置き換えます。
- パーティション データベース オブジェクトのパーティション設定を変更すると、Teradata Databaseは、各パーティション テーブルの新しいパーティション式のセットから新しいパーティションのCHECK制約を取り込み、以前のパーティションのCHECK制約をその新しい制約に置き換えます。行パーティションおよび列パーティションのテーブルと結合インデックスでTeradata Databaseが取り込むパーティションCHECK制約の詳細については、2バイト パーティションでパーティション化されたテーブルに対するパーティションCHECK制約および8バイト パーティションでパーティション化されたテーブルに対するパーティションCHECK制約をそれぞれ参照してください。
既存の行が新しいパーティション式に違反し、WITH DELETEまたはWITH INSERT句が指定されていない場合、新しいパーティションを適用することはできません。
- nullパーティション処理句WITH DELETEまたはWITH INSERT INTO save_tableを指定しなかった場合に、既存の行が新しいパーティション式に違反していると、その新しいパーティション式を適用することはできません。
暗黙のパーティションCHECK制約に違反する行(パーティション式の評価がnullになる行も含む)がテーブルに存在しないようにする必要があります。