例に使用する テーブル定義で定義したordersテーブルが存在すること、またordersテーブルの行パーティションを変更するときに無効になっている行を処理するための以下の保存テーブルが作成されているとします。
CREATE TABLE old_orders ( o_orderkey INTEGER NOT NULL, o_custkey INTEGER, o_orderstatus CHARACTER(1) CASESPECIFIC, o_totalprice DECIMAL(13,2) NOT NULL, o_orderdate DATE FORMAT 'yyyy-mm-dd' NOT NULL, o_orderpriority CHARACTER(21), o_clerk CHARACTER(16), o_shippriority INTEGER, o_comment VARCHAR(79)) UNIQUE PRIMARY INDEX (o_orderkey);
以下のALTER TABLEリクエストは、o_orderdateが1992年1月1日~1992年12月31日(DATE '1992-01-01 AND DATE '1992-12-31')の範囲にある行が0行以上ある場合に有効です。
MODIFYオプションはこの範囲にある値を持つ行をold_orders保存テーブルに移動し、その後ordersから削除します。
ALTER TABLE orders MODIFY DROP RANGE BETWEEN DATE '1992-01-01' AND DATE '1992-12-31' ADD RANGE BETWEEN DATE '1999-01-01' AND DATE '2000-12-31' EACH INTERVAL '1' MONTH WITH INSERT INTO old_orders;
ordersが列パーティション テーブルorders_cpとして定義されているとします。
以下のALTER TABLEリクエストは、o_orderdateが1992年1月1日~1992年12月31日(DATE '1992-01-01 AND DATE '1992-12-31')の範囲にある行が0行以上ある場合に有効です。
MODIFYオプションはこの範囲にある値を持つ行をold_orders保存テーブルに移動し、その後orders_cpから削除します。
ALTER TABLE orders_cp MODIFY DROP RANGE BETWEEN DATE '1992-01-01' AND DATE '1992-12-31' ADD RANGE BETWEEN DATE '1999-01-01' AND DATE '2000-12-31' EACH INTERVAL '1' MONTH WITH INSERT INTO old_orders;