]説明TRUNCATEはテーブル群から全ての行を素早く削除します。各テーブルに対して条件指定のないDELETEコマンドの実行と同じ効果を持ちますが、実際にテーブルを走査しない分、このコマンドの方が高速です。その後にVACUUM操作を行うことなく、このコマンドはディスク領域を即座に回収します。このコマンドは、大きなテーブルを対象とする場合に最も有用です。パラメータname空にするテーブルの名前です(スキーマ修飾名も可)。CASCADE指定されたテーブル、または、CASCADEにより削除対象テーブルとされたテーブルを参照する外部キーを持つテーブルすべてを自動的に空にします。RESTRICT外部キーにより対象のテーブルを参照するテーブルのいずれかが空にされない場合、操作を拒否します。これがデフォルトです。注釈テーブルの所有者のみがTRUNCATEを行うことができます。そのテーブルが他のテーブルから外部キーで参照されている場合、1つのTRUNCATEでそれらのテーブルをすべて空にするように指定していない限り、TRUNCATEを使用することはできません。このような場合は、有効性を検査するためにテーブルスキャンが必要になりますが、テーブルスキャンを行うのであれば、このコマンドの利点がなくなるからです。CASCADEを使用して、自動的にすべての依存テーブルを含めることができます。意図しないデータ損失の可能性がありますので、このオプションを使用する時には十分に注意してください。DELETEトリガを実行しません。警告TRUNCATEはMVCC的に安全ではありません。(MVCCに関する一般的な情報については第13章を参照してください。削除の後テーブルはすべてのトランザクションから見て、たとえそのトランザクションが始まる前のスナップショットを使用していたとしても、空になります。削除が始まる前にテーブルを参照しなかったトランザクションに関してのみ問題となります。SHAREロックを保持しますので、そのトランザクションが終わるまでTRUNCATEはブロックされます。このため、トランザクションでは、同一テーブルに対する後の問い合わせにおいてその内容に明らかな矛盾は発生しませんが、削除されたテーブルと他のテーブルとの間の内容に目に見える矛盾が発生します。TRUNCATEはトランザクション的に安全です。前後のトランザクションがコミットされなければ、トランザクションはロールバックされます。例bigtableテーブルおよびfattableテーブルを空にします。fattable;othertableテーブル、および、外部キー制約によりothertableを参照するすべてのテーブルを空にします。標準SQLにはTRUNCATEコマンドはありません。