レコードを削除するDeleteとTruncateの違い


どちらもテーブルのレコードを削除するわけですが・・・

●Delete

・DML
・削除するレコードをwhere句で絞り込める
・トランザクションとして利用できる
⇒ロールバック(UNDO)が可能
⇒トランザクションログに書き込む
DBMotoでレプリケーション可能

●Truncate

・DDL
・削除するレコードを指定できず全レコードを削除
・トランザクションとして利用できない
⇒ロールバック(UNDO)が不可
⇒トランザクションログに書き込まない
DBMotoでレプリケーション不可

ちなみにDBMotoでの初回レプリケーション(リフレッシュ)では全レコードを転送しますが、その際最初にTruncateによる削除処理が実行されます。

関連したトピックス