PHP | MySQLのTRUNCATE TABLEでテーブルを空にする方法
PHPでMySQLのTRUNCATE TABLEを使ってデータベースにあるテーブルを空にする(全件削除&再作成)方法とサンプルコードを紹介しています。
確認環境
エックスサーバー
PHP 8.016
TRUNCATE TABLEでテーブルを空にする
TRUNCATE TABLEはテーブルを空にして初期化します。
TRUNCATE TABLEを使ったPHPのサンプルコードは以下になります。
// クエリ
$sql = "TRUNCATE TABLE `table_name`";
// クエリを実行
$res = $mysqli->query($sql);
DELETEとの違い
DELETEでもテーブル内のデータを全件削除する事は可能ですが、TRUNCATE TABLEは初期化する事で空のテーブルとして再作成することができます。
例えば、AUTO_INCREMENTも0からになります。
phpMyAdminの操作でいうところの「テーブルを空にする」と同じ処理を実行します。
TRUNCATE TABLEの詳細な処理内容
TRUNCATE TABLEの詳細について、以下のページを参考にします。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.1.33 TRUNCATE TABLE ステートメント
- テーブルを削除して再作成します。これは、特に大きなテーブルの場合、行を 1 つずつ削除するよりもはるかに高速です。
- TRUNCATEは暗黙的なコミットを引き起こすため、ロールバックできません。
- セッションがアクティブなテーブルロックを保持している場合、実行できません。
- TRUNCATE TABLEは、テーブルまたはNDBテーブルを参照する他のテーブルからの制約がある場合に失敗します。同じ表の列間の外部キー制約は許可されます。
- 操作後、行数は0が返されます。
- 表形式ファイルが有効である限り、データ・ファイルまたは索引ファイルが破損している場合でも、TRUNCATE TABLEを使用して空のテーブルとして再作成することができます。
- すべての値は開始値にリセットされます。これは、通常シーケンス値を再利用しない場合も当てはまります。
- パーティションテーブルと一緒に使用すると、TRUNCATE TABLEはパーティション化を保持します。つまり、データ・ファイルと索引ファイルはドロップされて再作成されますが、パーティション定義は影響を受けません。
- TRUNCATE TABLEはトリガーを呼び出しません。
ディスカッション
コメント一覧
まだ、コメントがありません