TRUNCATE TABLE

TRUNCATE TABLE文は、指定した表に存在するすべての行を削除します。これは、すべての行を削除するDELETE文と類似しています。ただし、行を個別に削除するDELETEに比べ、処理が高速に実行されます。

TRUNCATE TABLEの構文

自分のスキーマ内にある表のすべての行を削除する。

TRUNCATE TABLE table

他のスキーマ内にある表のすべての行を削除する。

TRUNCATE TABLE schema.table

表のすべての行を削除したときに、マテリアライズド・ビュー・ログも削除する。

TRUNCATE TABLE table PURGE MATERIALIZED VIEW LOG

表のすべての行を削除したときに、ON DELETE CASCADE参照制約が有効化されていて、この表を参照する子表の行もすべて削除する。

TRUNCATE TABLE table CASCADE
table
すべての行を削除する表の名前を指定する。
schema
すべての行を削除する表が存在するスキーマを指定する。

TRUNCATE TABLEとDELETEの違い

TRUNCATE TABLEはDDL文である。DDL文を実行すると、暗黙的にCOMMITが実行される。このため、TRUNCATE TABLE文で削除した行はロールバックできない。

DELETE 文と TRUNCATE TABLE 文の違い
DELETE TRUNCATE T ABLE
SQL文の分類 DML文 DDL文
処理速度 遅い 速い
トランザクション コミットされない コミットされる

TRUNCATE TABLEに必要な権限

自分のスキーマ内にある表の行を削除するには、とくに権限は必要ない。

他のスキーマ内にある表の行を削除するには、DROP ANY TABLEシステム権限が必要である。

関連SQL