`TRUNCATE` 文は、テーブルからデータをクリアするために使用されます。このトピックでは、Hologres における `TRUNCATE` 文の構文について説明します。
制限
TRUNCATE 文には、次の制限事項があります。
Hologres はシーケンスをサポートしていますが、現在サポートしているのは `CONTINUE IDENTITY` のみで、`RESTART IDENTITY` はサポートしていません。
TRUNCATE文は、標準テーブル、親パーティションテーブル、および子パーティションテーブルで実行できます。TRUNCATE文は、外部テーブルでは実行できません。
構文
TRUNCATE 文の構文は次のとおりです。
TRUNCATE [ TABLE ] name [, ... ]
[CONTINUE IDENTITY ] CONTINUE IDENTITY パラメーターは、シーケンスの現在の値を変更しません。
TRUNCATEコマンドはバイナリログを生成しません。V3.1 より前のバージョンでは、
TRUNCATEはデータ定義言語 (DDL) 文でした。バイナリログが有効になっているテーブルでTRUNCATE文を実行しても、エラーは報告されず、バイナリログも生成されません。V3.1 以降のバージョンでは、
TRUNCATEはデータ操作言語 (DML) 文です。この変更により、TRUNCATE操作が頻繁に行われるシナリオでのフロントエンド (FE) への負荷が軽減されます。バイナリログが有効になっているテーブルで TRUNCATE 文を実行すると、エラーが報告されます。この場合、次のいずれかのコマンドを実行してください。方法 1 (推奨):セッションレベルで、Grand Unified Configuration (GUC) パラメーター
SET hg_enable_truncate_as_dml = offを設定して、TRUNCATE 操作を DDL 操作に変更します。方法 2:セッションレベルで、GUC パラメーター
SET hg_experimental_generate_binlog = offを設定して、バイナリログ機能を無効にします。注意:この GUC パラメーターは、すべてのテーブルと DML 操作に影響します。詳細については、「テーブルでの DML 操作に対するバイナリログの無効化」をご参照ください。
例
次の例は、TRUNCATE 文の使用方法を示しています。
例 1:
CREATE TABLE event ( id INT, name text, tag text ); INSERT INTO event (id,name,tag) values (23,'buy', 'num'); SELECT * FROM event; TRUNCATE TABLE event ;例 2:
CREATE TABLE event_1 ( id serial, name text, tag text ); INSERT INTO event_1 (name,tag) values ('buy', 'num'); SELECT * FROM event_1; # CONTINUE IDENTITY はデフォルトです。 TRUNCATE TABLE event_1 CONTINUE IDENTITY;