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

PolarDB:TRUNCATE TABLE

最終更新日:Mar 29, 2026

TRUNCATE TABLE コマンドは、テーブル内のすべての行を削除します。テーブル定義(スキーマ)は、実行後も保持されます。パーティションテーブルに対して実行した場合、そのすべてのパーティションおよびサブパーティションが対象となります。

構文

TRUNCATE TABLE table_name;

パラメーター

パラメーター説明
table_name削除対象のテーブル名です。スキーマ修飾子を付与することも可能です(例: schema_name.table_name)。

前提条件

テーブルを TRUNCATE するには、以下のいずれかの権限を持つ必要があります。

  • パーティション分割のルート所有者

  • 当該テーブルを所有するグループのメンバー

  • スキーマ所有者

  • データベースのスーパーユーザ

例: パーティションテーブルを空にする

この例では、リストパーティション方式で分割された sales テーブルを作成し、17 行のデータを挿入して検証した後、TRUNCATE TABLE を実行して全行を削除します。

テーブルの作成:

CREATE TABLE sales
(
  dept_no     number,
  part_no     varchar2,
  country     varchar2(20),
  date        date,
  amount      number
)
PARTITION BY LIST(country)
(
  PARTITION europe   VALUES('FRANCE', 'ITALY'),
  PARTITION asia     VALUES('INDIA', 'PAKISTAN'),
  PARTITION americas VALUES('US', 'CANADA')
);

行の挿入:

INSERT INTO sales VALUES
(10, '4519b', 'FRANCE',   '17-Jan-2012', '45000'),
(20, '3788a', 'INDIA',    '01-Mar-2012', '75000'),
(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', '75000'),
(30, '4519b', 'CANADA',   '08-Apr-2012', '120000'),
(40, '3788a', 'US',       '12-May-2012', '4950'),
(10, '9519b', 'ITALY',    '07-Jul-2012', '15000'),
(10, '9519a', 'FRANCE',   '18-Aug-2012', '650000'),
(10, '9519b', 'FRANCE',   '18-Aug-2012', '650000'),
(20, '3788b', 'INDIA',    '21-Sept-2012', '5090'),
(40, '4788a', 'US',       '23-Sept-2012', '4950'),
(40, '4788b', 'US',       '09-Oct-2012', '15000'),
(20, '4519a', 'INDIA',    '18-Oct-2012', '650000'),
(20, '4519b', 'INDIA',    '2-Dec-2012',  '5090');

データの存在確認tableoid::regclass 式により、各行が属するパーティションを表示します):

acctg=# SELECT tableoid::regclass, * FROM sales;
   tableoid    | dept_no | part_no | country  |        date        | amount
---------------+---------+---------+----------+--------------------+--------
 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   | US       | 09-OCT-12 00:00:00 |  15000
(17 rows)

テーブルの TRUNCATE:

TRUNCATE TABLE sales;

テーブルが空であることを確認(スキーマは保持されたまま、すべての行が削除されています):

acctg=# SELECT tableoid::regclass, * FROM sales;
 tableoid | dept_no | part_no | country | date | amount
----------+---------+---------+---------+------+--------
(0 rows)