以下のテーブルが作成済みであるとします。
CREATE TABLE orders ( o_orderkey INTEGER NOT NULL, o_custkey INTEGER, o_orderstatus CHAR(1) NOT CASESPECIFIC, o_totalprice DECIMAL(13,2) NOT NULL, o_orderdate DATE FORMAT 'yyyy-mm-dd' NOT NULL, o_orderpriority CHAR(21), o_comment VARCHAR(79)) PRIMARY INDEX (o_orderkey) PARTITION BY (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 24, RANGE_N(o_orderpriority BETWEEN 'high' AND 'highest', 'low' AND 'lowest', 'medium' AND 'medium', NO RANGE OR UNKNOWN)) UNIQUE INDEX (o_orderkey);
次のALTER TABLEリクエストは、ordersが空である場合にのみ有効です。
ALTER TABLE orders MODIFY PARTITION BY (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 ), CASE_N(o_orderstatus = 'S', o_orderstatus = 'C', o_orderstatus = 'F', o_orderstatus = 'T', NO CASE OR UNKNOWN) );
上記のordersに対する テーブル定義では、2000-01-01から2000-12-31の間にレベル2の行パーティション式を変更するo_orderdate値を持つ行がない場合に、次の同等のリクエストのいずれかを実行できます。
ALTER TABLE orders MODIFY DROP RANGE#L2 BETWEEN DATE '2000-01-01' AND DATE '2000-12-31' ADD RANGE BETWEEN DATE '2007-01-01' AND DATE '2007-12-31' EACH INTERVAL '1' MONTH; ALTER TABLE orders MODIFY DROP RANGE#L2 WHERE orders.PARTITION#L2 BETWEEN 1 AND 12 ADD RANGE#L2 BETWEEN DATE '2007-01-01' AND DATE '2007-12-31' EACH INTERVAL '1' MONTH; ALTER TABLE orders MODIFY DROP RANGE#L2 WHERE PARTITION#L2 IN (1,2,3,4,5,6,7,8,9,10,11,12) ADD RANGE BETWEEN DATE '2007-01-01' AND DATE '2007-12-31' EACH INTERVAL '1' MONTH;
ordersに対するテーブルの定義では、テーブルに行が入力されている場合にも次のALTER TABLEリクエストが有効です。ただし、このリクエストではWITH句を指定していないため、削除される範囲は空である必要があります。
ALTER TABLE orders MODIFY PRIMARY INDEX DROP RANGE#L1 BETWEEN 0 AND 999 ADD RANGE BETWEEN 50000 AND 50999;
これらのALTER TABLE MODIFY ADD/DROP RANGEリクエストは、セッション照合がPPI照合に一致し、セッション モードが文字PPIの作成時に有効であったセッション モードと一致する場合にのみ実行されます。
同じオリジナル スキーマに基づく次の例は、エラーを返します。
ALTER TABLE orders MODIFY DROP RANGE#L3 BETWEEN 'medium' AND 'medium' ADD RANGE BETWEEN 'medium' AND 'urgent';
ordersテーブルの文字の行パーティション レベルにかかわる次のADD/DROPリクエストは、特別な行パーティションNO RANGE OR UNKNOWNおよびUNKNOWNのみにかかわり、NO RANGE OR UNKNOWN行パーティションがUNKNOWNパーティションにより置き換えられるため、有効です。
ALTER TABLE orders MODIFY PRIMARY INDEX DROP RANGE#L3 WHERE PARTITION#L3 = 4 ADD RANGE#L3 UNKNOWN;