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

PolarDB:ALTER TABLE...TRUNCATE PARTITION

最終更新日:Jun 05, 2024

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

概要

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

説明

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

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

ALTER table... TRUNCATE PARTITIONを呼び出すには、テーブルに対するTRUNCATE権限が必要です。

パラメーター

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

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

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

(
  dept_no number,   
  part_no varchar2,
  country varchar2(20),
  date date,
  金額番号
)
リストによるパーティー (国)
(
  PARTITION europe VALUES('FRANCE', 'ITALY'),
  PARTITION asia VALUES('INDIA', 'PAKISTAN'),
  PARTITIONアメリカスバリュー (「米国」、「カナダ」)
); 
次のコマンドを実行して、salesテーブルに値を追加します。

(10、'4519b' 、'FRANCE' 、'17-Jan-2012 '、'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-2012 '、'50000') 、(30、'9519b' 、'CANADA' 、'01-Feb-2012 '、'7700') 、(30、'4519b' 、'CANADA' 、'08-Apr-2012 '、'120000') 、(40、'3788a' 、'US '、'12-May-2012' 、'4950') 、(10、'9519b' 、'ITALY' 、'07-Jul-2012 '、'15000') 、(10、「9519a」、「フランス」、「18 Aug-2012」、「650000」) 、(10、'9519b' 、'フランス '、'18-Aug-2012' 、'650000') 、(20、'3788b' 、'INDIA、'21-9月-2012 '、'5090') 、(40、'4788a' 、'US '、'23-9月-2012' 、'4950') 、(40、'4788b' 、'US' 、'09-Oct-2012 '、'15000') 、(20、'4519a' 、'INDIA' 、'18-Oct-2012 '、'650000') 、(20、'4519b' 、'INDIA' 、'2-Dec-2012 '、'5090'); 
salesテーブルを照会すると、パーティションにdata:
acctg=# SELECT tableid::regclass, * FROM sales;
    tableoid | dept_no | part_no | 国 | 日付 | 金額
---------------- -------- ---------- ----------------- -------------------- -------------
 sales_europe   |      10 | 4519b   | FRANCE   | 17-JAN-12 00:00:00 |  45000
 sales_europe   |      10 | 9519b   | ITALY    | 07-JUL-12 00:00:00 |  15000
 sales_europe   |      10 | 9519a   | FRANCE   | 18-AUG-12 00:00:00 | 650000
 sales_europe   |      10 | 9519b   | FRANCE   | 18-AUG-12 00:00:00 | 650000
 sales_asia     |      20 | 3788a   | INDIA    | 01-MAR-12 00:00:00 |  75000
 sales_asia     |      20 | 3788a   | PAKISTAN | 04-JUN-12 00:00:00 |  37500
 sales_asia     |      20 | 3788b   | INDIA    | 21-SEP-12 00:00:00 |   5090
 sales_asia     |      20 | 4519a   | INDIA    | 18-OCT-12 00:00:00 | 650000
 sales_asia     |      20 | 4519b   | INDIA    | 02-DEC-12 00:00:00 |   5090
 sales_americas |      40 | 9519b   | US       | 12-APR-12 00:00:00 | 145000
 sales_americas |      40 | 4577b   | US       | 11-NOV-12 00:00:00 |  25000
 sales_americas |      30 | 7588b   | CANADA   | 14-DEC-12 00:00:00 |  50000
 sales_americas |      30 | 9519b   | CANADA   | 01-FEB-12 00:00:00 |  75000
 sales_americas |      30 | 4519b   | CANADA   | 08-APR-12 00:00:00 | 120000
 sales_americas |      40 | 3788a   | US       | 12-MAY-12 00:00:00 |   4950
 sales_americas |      40 | 4788a   | US       | 23-SEP-12 00:00:00 |   4950
 sales_americas | 40 | 4788b | 米国 | 09-OCT-12 00:00:00 | 15000
(17行) 
americasパーティションのコンテンツを削除するには、次のコマンドを実行します。
ALTER TABLE sales TRUNCATE partition americas;
salesテーブルをクエリすると、americasパーティションのコンテンツが削除されたことが示されます。
acctg=# SELECT tableid::regclass, * FROM sales;
   tableoid | dept_no | part_no | 国 | 日付 | 金額
------------- ---------------------------------------- -------------------- -------------
 sales_europe |      10 | 4519b   | FRANCE   | 17-JAN-12 00:00:00 |  45000
 sales_europe |      10 | 9519b   | ITALY    | 07-JUL-12 00:00:00 |  15000
 sales_europe |      10 | 9519a   | FRANCE   | 18-AUG-12 00:00:00 | 650000
 sales_europe |      10 | 9519b   | FRANCE   | 18-AUG-12 00:00:00 | 650000
 sales_asia   |      20 | 3788a   | INDIA    | 01-MAR-12 00:00:00 |  75000
 sales_asia   |      20 | 3788a   | PAKISTAN | 04-JUN-12 00:00:00 |  37500
 sales_asia   |      20 | 3788b   | INDIA    | 21-SEP-12 00:00:00 |   5090
 sales_asia   |      20 | 4519a   | INDIA    | 18-OCT-12 00:00:00 | 650000
 sales_asia | 20 | 4519b | インド | 02-DEC-12 00:00:00 | 5090
(9行) 
行は削除されていますが、americasパーティションの構造はそのままです:
acctg=# SELECT partition_name, high_value FROM ALL_TAB_PARTITIONS;
 partition_name | high_value
---------------- + ---------------------
 ヨーロッパ | 「フランス」、「イタリア」   
 アジア | 'INDIA' 、'PAKISTAN' 
 アメリカ | 「米国」、「カナダ」
(3行)