この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)
出典検索?: "TRUNCATE" SQL
TRUNCATE または TRUNCATE TABLE ステートメントは、テーブルから全ての行を削除するSQLである。データベースが持つ整合性を維持する機構をスキップすることで高速な削除を実現している場合が多い。削除する行それぞれを記録するためのトランザクションログの出力を避けることで、効率的に全ての行を削除できる。
「TRUNCATE TABLE 表名」は「DELETE FROM 表名」とほぼ等価だが、以下の点で異なる。 多くのデータベース製品では TABLE は省略可能である。
WHERE 句を指定できない。全ての行は一括削除される。
対象のテーブルの排他ロックを取得する。
外部キーで参照されるテーブルに対しては実行できない。外部キーによる整合性の確認を行わないためである。
Oracle Database や MySQL の一部のストレージエンジンでは、TRUNCATE 後、自動的にコミットが行われる。TRUNCATE による削除はロールバックできない。
PostgreSQL のように、TRUNCATE をトランザクション内で実行でき、ロールバックも可能なデータベースも存在する。対象のテーブルを「古いバージョン」としてトランザクションの完了時まで保持することで実現されている。
Microsoft SQL Server では TRUNCATE TABLE ステートメントはレプリケーションやログシッピングの対象となっているテーブルに対して実行できない。どちらも遠隔のデータベースの一貫性を保つためにトランザクションログを利用しているためである。
構文TRUNCATE [TABLE] テーブル名 [, テーブル名]
表
話
編
歴
データベース管理システム
データモデル
関係モデル
データベース設計
正規化
参照整合性
関係代数
関係論理
データベース管理システム
関係データベース管理システム
オブジェクト関係データベース
分散データベース
トランザクション処理
概念
データベース
ACID
CRUD
3値論理(NULL)
候補キー
外部キー
主キー
スーパーキー
代理キー
オブジェクト
関係 (表)
ビュー
トランザクション
ログ
トリガ
索引
ストアドプロシージャ
カーソル
分割
SQL
SELECT
INSERT
UPDATE
MERGE
DELETE
JOIN
CREATE
DROP
COMMIT
ROLLBACK
TRUNCATE
ALTER
WHERE
SAVEPOINT
構成要素
並行性制御
データ辞書
JDBC
ODBC
データベース言語
問い合わせ言語
クエリ最適化
クエリ実行計画
データベース製品
関係データベース管理システムの比較データベース接続クライアント カテゴリ