説明
このステートメントは、指定されたテーブルを完全に削除しますが、テーブル構造(テーブル内で定義されたパーティション情報を含む)は保持されます。論理的には、このステートメントはすべての行を削除するために使用される DELETE FROM ステートメントと同じです。
制限事項と注意点
TRUNCATE TABLE ステートメントと DELETE FROM ステートメントの主な違いは以下のとおりです:
TRUNCATE操作はテーブルを削除して再作成するため、特に大きなテーブルの場合、各行を個別に削除するよりもはるかに高速です。TRUNCATE TABLEステートメントの実行結果では、影響を受ける行数は常に0行と表示されます。TRUNCATE TABLEステートメントを使用すると、テーブルマネージャーは最後に使用されたAUTO_INCREMENT値を覚えていませんが、最初からカウントを開始します。TRUNCATEステートメントは、トランザクション処理やテーブルロックが進行中の場合には使用できず、使用しようとするとエラーが発生します。テーブル定義ファイルが有効であれば、データやインデックスファイルが破損していても、
TRUNCATE TABLEを使用して空のテーブルとして再作成できます。
権限要件
TRUNCATE TABLE ステートメントを実行するには、現在のユーザーがテーブルに対する DROP 権限を持っている必要があります。OceanBaseデータベースの権限の詳細については、Oracleモードの権限分類を参照してください。
構文
TRUNCATE [TABLE] [schema.]table_name;
パラメータの説明
| パラメータ | 説明 |
|---|---|
| schema. | スキーマを指定します。schema を省略した場合、デフォルトでこのテーブルは現在のスキーマに存在します。 |
| table_name | テーブル名を指定します。 |
例
テーブル tb1 を完全に削除します。
obclient> TRUNCATE TABLE tbl1;
Query OK, 0 rows affected