すべてのプロダクト
Search
ドキュメントセンター

PolarDB:ALTER TABLE...TRUNCATE SUBPARTITION

最終更新日:Jun 05, 2024

ALTER TABLE...TRUNCATE SUBPARTITIONコマンドを使用して、指定されたサブパーティションからすべてのデータを削除し、サブパーティション構造をそのまま残します。

概要

構文:
ALTER TABLE table_name 
  TRUNCATE SUBPARTITION subpartition_name 
  [{DROP | REUSE} ストレージ] 

説明

ALTER TABLE...TRUNCATE SUBPARTITIONコマンドは、指定されたサブパーティションからすべてのデータを削除し、サブパーティション構造はそのまま残します。

ALTER TABLE...TRUNCATE SUBPARTITIONコマンドは、テーブルに存在する可能性のあるON DELETEトリガーを起動しません。 ただし、コマンドはTRUNCATEトリガーで起動します。 ON TRUNCATEトリガーがサブパーティションに定義されている場合、すべてのBEFORE TRUNCATEトリガーは切り捨てが発生する前に起動され、すべてのAFTER TRUNCATEトリガーは最後の切り捨てが実行された後に起動されます。

ALTER table... TRUNCATE SUBPARTITIONを実行するには、テーブルに対するTRUNCATE権限が必要です。

パラメーター

パラメーター説明
table_nameパーティションテーブルの名前 (オプションでスキーマ修飾) 。
subpartition_name切り捨てられるサブパーティションの名前。
説明 DROP STORAGEとREUSE STORAGEは互換性のためにのみ含まれています。 これらの句は解析され、無視されます。

例-サブパーティションを空にする

次の例では、salesテーブルのサブパーティションからデータを削除します。 次のコマンドを実行して、salesテーブルを作成します。

(
  dept_no number,
  part_no varchar2,
  country varchar2(20),
  date date,
  金額番号
)
リストによるサブパート (国)
(
  パーティー「2011」の値は未満 ('01-JAN-2012 ')
  (
    SUBPARTITION europe_2011 VALUES ('ITALY', 'FRANCE'),
    SUBPARTITION asia_2011 VALUES ('PAKISTAN', 'INDIA'),
    SUBPARTITION americas_2011 VALUES ('US', 'CANADA')
  ),
  PARTITION "2012" VALUES LESS THAN('01-JAN-2013')
  (
    SUBPARTITION europe_2012 VALUES ('ITALY', 'FRANCE'),
    SUBPARTITION asia_2012 VALUES ('PAKISTAN', 'INDIA'),
    SUBPARTITION americas_2012 VALUES ('US', 'CANADA')
  ),
  パーティー「2013」の値は未満 ('01-JAN-2015 ')
  (
    SUBPARTITION europe_2013 VALUES ('ITALY', 'FRANCE'),
    SUBPARTITION asia_2013 VALUES ('PAKISTAN', 'INDIA'),
    SUBPARTITION americas_2013 VALUES ('US', 'CANADA')
  )
);
次のコマンドを実行して、salesテーブルに値を追加します。

(10、'4519b' 、'FRANCE' 、'17-Jan-2011 '、'45000') 、(20、'3788a' 、'INDIA、'01-Mar-2012 '、'7700') 、(40、'9519b' 、'US' 、'12-Apr-2012 '、'145000') 、(20、'3788a' 、'PAKISTAN' 、'04-Jun-2012 '、'37500') 、(40、'4577b' 、'US '、'11-Nov-2012' 、'25000') 、(30、'7588b' 、'CANADA' 、'14-Dec-2011 '、'50000') 、(30、'4519b' 、'CANADA' 、'08-Apr-2012 '、'120000') 、(40、'3788a' 、'US '、'12-May-2011' 、'4950') 、(20、'3788a' 、'US '、'04-Apr-2012' 、'37500') 、(40、'4577b' 、'INDIA' 、'11-Jun-2011 '、'25000') 、(10、'9519b' 、'ITALY' 、'07-Jul-2012 '、'15000') 、(20、'4519b' 、'INDIA' 、'2-Dec-2012 '、'5090'); 
salesテーブルのクエリは、行がサブパーティション間で分散されていることを示しています:
acctg=# SELECT tableid::regclass, * FROM sales;
      tableoid | dept_no | part_no | 国 | 日付 | 金額
-------------------- ------- --------- --------------- ------------------- -------------
 sales_2011_europe | 10 | 4519b | フランス | 17-JAN-11 00:00:00 | 45000
 sales_2011_asia | 40 | 4577b | インド | 11-JUN-11 00:00:00 | 25000
 sales_2011_americas | 30 | 7588b | カナダ | 14-DEC-11 00:00:00 | 50000
 sales_2011_americas | 40 | 3788a | 米国 | 5月12日-11 00:00:00 | 4950
 sales_2012_europe | 10 | 9519b | イタリア | 07-JUL-12 00:00:00 | 15000
 sales_2012_asia | 20 | 3788a | インド | 01-MAR-12 00:00:00 | 75000
 sales_2012_asia | 20 | 3788a | パキスタン | 04-JUN-12 00:00:00 | 37500
 sales_2012_asia | 20 | 4519b | インド | 02-DEC-12 00:00:00 | 5090
 sales_2012_americas | 40 | 9519b | 米国 | 12-APR-12 00:00:00 | 145000
 sales_2012_americas | 40 | 4577b | 米国 | 11-NOV-12 00:00:00 | 25000
 sales_2012_americas | 30 | 4519b | カナダ | 08-APR-12 00:00:00 | 120000
 sales_2012_americas | 20 | 3788a | 米国 | 04-APR-12 00:00:00 | 37500
(12行) 
2012_americasパーティションのコンテンツを削除するには、次のコマンドを実行します。
ALTER TABLE sales TRUNCATE SUBPARTITION "americas_2012";
salesテーブルのクエリは、americas_2012パーティションのコンテンツが削除されたことを示しています:
acctg=# SELECT tableid::regclass, * FROM sales;
      tableoid | dept_no | part_no | 国 | 日付 | 金額
-------------------- ------- -------- ------------- -------------------- ------------
 sales_2011_europe | 10 | 4519b | フランス | 17-JAN-11 00:00:00 | 45000
 sales_2011_asia | 40 | 4577b | インド | 11-JUN-11 00:00:00 | 25000
 sales_2011_americas | 30 | 7588b | カナダ | 14-DEC-11 00:00:00 | 50000
 sales_2011_americas | 40 | 3788a | 米国 | 5月12日-11 00:00:00 | 4950
 sales_2012_europe | 10 | 9519b | イタリア | 07-JUL-12 00:00:00 | 15000
 sales_2012_asia | 20 | 3788a | インド | 01-MAR-12 00:00:00 | 75000
 sales_2012_asia | 20 | 3788a | パキスタン | 04-JUN-12 00:00:00 | 37500
 sales_2012_asia | 20 | 4519b | インド | 02-DEC-12 00:00:00 | 5090
(8行) 
行は削除されていますが、2012_americasパーティションの構造はそのままです:
acctg=# SELECT subpartition_name, high_value FROM ALL_TAB_SUBPARTITIONS; 
 subpartition_name | high_value
------------------- + ---------------------
 2013_europe | 「イタリア」、「フランス」   
 2012_europe | 「イタリア」、「フランス」   
 2011_europe | 「イタリア」、「フランス」   
 2013_asia | 「パキスタン」、「インド」 
 2012_asia | 「パキスタン」、「インド」 
 2011_asia | 「パキスタン」、「インド」 
 2013_americas | 「米国」、「カナダ」      
 2012_americas | 「米国」、「カナダ」      
 2011_americas | 「米国」、「カナダ」
(9)
行)