「TRUNCATE」は、テーブル(表)のデータを削除するということでは「DELETE」と変わりがありません。
ただし、テーブル(表)のデータは全て削除されてしまいます。
そして、「TRUNCATE」を実行した後に「やっぱり元に戻したい」ということになった場合、ROLLBACKでは戻すことが不可能です。
なぜ、ROLLBACKできないのかは
「TRUNCATE」で削除した時は、REDOログに削除した履歴が記録されない為のようです。
ログを記録しないので、「DELETE」よりも早く削除を完了させることが可能なんでしょうね。
「TRUNCATE」を実行した後に取消(ROLLBACK)できないという点で、慎重に実行する必要がありますね。
テーブル(表)のデータを全件(全行)削除する
テーブル(表) "table1" に挿入されているデータを全て削除する方法です。-- テーブルのデータを全て削除するSQL
TRUNCATE TABLE <テーブル名>;
実行例1. テーブル(表) "table1" の データを全件削除する
テーブル(表) "table1" に挿入されているデータを全件(全行)削除します。-- テーブル "table1" のテータを全件(全行)削除するSQL
TRUNCATE TABLE table1;
パフォーマンスは、「DELETE」よりも「TRUNCATE」の方が良いです。
「TRUNCATE」すると索引も削除さるます。
ここでは、テーブルのレコードを全件を削除する方法をご紹介しました。
以上、Oracleで全件削除する「TRUNCATE TABLE」でした。
0 件のコメント:
コメントを投稿