レベル1の列パーティションを持つ、orders_cpという名前の前の例から、列パーティション バージョンであるordersテーブルを作成したとします。
次のALTER TABLEリクエストは、orders_cpにデータが入力されていない場合にのみ有効です。
ALTER TABLE orders_cp MODIFY PARTITION BY (COLUMN, RANGE_N(o_custkey BETWEEN 0 AND 49999 EACH 1000), RANGE_N(o_orderdate BETWEEN DATE '2000-01-01' AND DATE '2006-12-31' EACH INTERVAL '1' MONTH) ADD 48, RANGE_N(o_orderstatus = 'S', o_orderstatus = 'C', o_orderstatus = 'F', o_orderstatus = 'T', NO CASE OR UNKNOWN) );
orders_cpが空であるために以前のリクエストが成功した場合、2000-01-01から2000-12-31の間にレベル3のパーティション式を変更するo_orderdate値を持つ行がないときに、次の同等の要求のいずれかを実行できます。
ALTER TABLE orders_cp MODIFY DROP RANGE#L3 BETWEEN DATE '2000-01-01' AND DATE '2000-12-31' ADD RANGE BETWEEN DATE '2007-01-01' AND DATE '2008-12-31' EACH INTERVAL '1' MONTH; ALTER TABLE orders_cp MODIFY DROP RANGE#L3 WHERE orders_cp.PARTITION#L2 BETWEEN 1 AND 12 ADD RANGE#L3 BETWEEN DATE '2007-01-01' AND DATE '2008-12-31' EACH INTERVAL '1' MONTH; ALTER TABLE orders_cp MODIFY DROP RANGE#L3 WHERE PARTITION#L3 IN (1,2,3,4,5,6,7,8,9,10,11,12) ADD RANGE BETWEEN DATE '2007-01-01' AND DATE '2008-12-31' EACH INTERVAL '1' MONTH;
orders_cpが列パーティションである場合、テーブルにデータが入力されているときにも次のALTER TABLE ... MODIFYリクエストが有効です。
ALTER TABLE orders_cp MODIFY DROP RANGE#L2 BETWEEN 0 AND 999 ADD RANGE BETWEEN 50000 AND 54999 EACH 100;
これらのALTER TABLE MODIFY ADD/DROP RANGEリクエストは、セッション照合およびセッション モードがテーブルの作成時と同じである場合にのみ実行されます。
同じオリジナル スキーマに基づく次の例は、セッション照合またはセッション モードのいずれかがorders_cpの作成時と異なる場合にエラーを返します。
ALTER TABLE orders_cp MODIFY DROP RANGE#L3 BETWEEN 'medium' AND 'medium' ADD RANGE BETWEEN 'medium' AND 'urgent';
orders_cp表の文字のパーティション レベルにかかわる次のADD/DROPリクエストは、特別な行パーティションNO RANGE OR UNKNOWNおよびUNKNOWNのみにかかわり、NO RANGE OR UNKNOWN行パーティションがUNKNOWNパーティションにより置き換えられるため、有効です。Vantageはorders_cpに対して定義された範囲のいずれにも属さない行を削除します。
ALTER TABLE orders_cp MODIFY DROP RANGE#L4 WHERE PARTITION#L3 = 4 ADD RANGE#L4 UNKNOWN WITH DELETE;