TRUNCATE の使い方
表を空にする
書き方
TRUNCATE TABLE 表;
全行を一度に消します(表は残る)。
よく使うオプション
| オプション | 意味 |
|---|---|
TRUNCATE TABLE 表 | すべての行を一度に消す(表は残る) |
RESTART IDENTITY | 自動の番号を 1 から振り直す(PostgreSQL) |
CASCADE | 参照している表も一緒に空にする(PostgreSQL) |
例
TRUNCATE TABLE event_logs;TRUNCATE TABLEログの表を空にします。表の形やインデックスは残ります。
TRUNCATE TABLE memos RESTART IDENTITY;
空にしたうえで、自動の番号も 1 からに戻します。
SELECT COUNT(*) FROM event_logs; count
-------
0
(1 row)空になったことを確かめます。
よくある間違い・注意
- TRUNCATE には WHERE が書けません。一部の行だけを消すときは DELETE を使います。
- DELETE より速い代わりに、Oracle や MySQL では ROLLBACK で戻せません(PostgreSQL は BEGIN の中なら戻せます)。
- 外部キーで参照されている表は、CASCADE を付けないと空にできません。
実際に打って練習する
SQL コースの Lv45「中身を空にする TRUNCATE」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
Lv1〜3 は、登録不要・無料で遊べます(それより先はブロンズ以上のプランで遊べます)。