TRUNCATE TABLE文は、すべての行を削除するDELETE文と類似しています。ただし、行を個別に削除するDELETEに比べ、処理が高速に実行されます。
必要な権限
表の所有者に必要な権限はありません。
別のユーザーの表の場合、DELETEが必要です。
SQL構文
TRUNCATE TABLE [Owner.]TableName
パラメータ
TRUNCATE TABLEには、次のパラメータがあります。
パラメータ | 説明 |
---|---|
[ Owner .] TableName |
切り捨てる表を指定します。 |
説明
TRUNCATEはDDL文であるため、DDLCommitBehavior
属性によって制御されます。 DDLCommitBehavior
=0(デフォルト)の場合、TRUNCATE文の実行前と実行後にコミットが実施されます。 DDLCommitBehavior
=1の場合、TRUNCATEはトランザクションの一部となり、次のルールが適用されます。
TRUNCATE操作はロールバックできます。
TRUNCATE文と同じトランザクション内で、この文の後にINSERT文を使用することはできません。
同時読取りのコミット読取り操作が可能です。読取りセマンティックは、DELETE文がある場合の読取りのコミット読取りと同じになります。
子表がある場合でも、TRUNCATEを実行できます。ただし、TRUNCATEを実行するには、子表を空にする必要があります。いずれかの子表に行が含まれていると、子表が空でないことを示すエラーが返されます。
マテリアライズド・ビューのディテール表およびキャッシュ・グループまたは一時表に含まれる表では、TRUNCATEはサポートされていません。
表に可変長の表外データが含まれている場合、TRUNCATE TABLEの実行結果は、表内のすべての行を削除するDELETE文と同じです。 表外データの詳細は、「数値データ型」を参照してください。
表をレプリケートしている場合にTRUNCATE文を使用すると、操作対象の行が存在しない場合でも、サブスクライバにレプリケートされます。
タイムスタンプ競合チェックが有効な状態で表をレプリケートすると、競合が報告されません。
切り捨てられた表がコミットされていない場合は、この表のハッシュ・ページを変更するために、DROP TABLEおよびALTER TABLE操作を使用できません。
例
recreation.clubs
表のすべての行を削除するには、次の文を使用します。
TRUNCATE TABLE recreation.clubs;
関連項目