TRUNCATE
テーブルをスキャンせずに、テーブルからすべての行を削除します。この操作は無条件の DELETE 操作に対する代替案ですが、より高速です。TRUNCATE コマンドを実行するには、TRUNCATE TABLE アクセス許可を付与されている、テーブルの所有者である、またはスーパーユーザーである必要があります。テーブルを切り捨てるアクセス許可を付与するには、GRANT コマンドを使用します。
TRUNCATE は DELETE よりもはるかに効率的であり、VACUUM および ANALYZE を必要としません。ただし、TRUNCATE では、その操作を実行するトランザクションがコミットされることに注意してください。
構文
TRUNCATE [ TABLE ] table_name
このコマンドはマテリアライズドビューでも機能します。
TRUNCATE materialized_view_name
パラメータ
- TABLE
-
オプションキーワード
- table_name
-
一時テーブルまたは永続的テーブル テーブルの所有者またはスーパーバイザだけがテーブルを切り取ることができます。
外部キー拘束で参照されるテーブルなど、任意のテーブルを切り取ることができます。
テーブルを切り取った後、テーブルに対して VACUUM を実行する必要はありません。
- materialized_view_name
-
マテリアライズドビュー。
マテリアライズドビューへのストリーミング取り込み に使用されているマテリアライズドビューは切り捨てることができます。
使用に関する注意事項
TRUNCATE コマンドはコマンドが実行されたトランザクションをコミットします。そのため、TRUNCATE 操作をロールバックすることはできず、それ自体がコミットを行うと TRUNCATE コマンドが他の操作にコミットする場合があります。
例
TRUNCATE コマンドを使って、CATEGORY テーブルからすべての行を削除します。
truncate category;
TRUNCATE オペレーションのロールバック試行。
begin; truncate date; rollback; select count(*) from date; count ------- 0 (1 row)
TRUNCATE コマンドにより自動的に確定したため、ROLLBACK コマンドを実行しても DATE テーブルは空のままです。
次の例では、TRUNCATE コマンドを使用してマテリアライズドビューからすべての行を削除します。
truncate my_materialized_view;
マテリアライズドビューのすべてのレコードが削除され、マテリアライズドビューとそのスキーマはそのまま残ります。クエリでは、マテリアライズドビュー名はサンプルです。