・TRUNCATEはトランザクションセーフでない(>トランザクション中に実行するとエラー)
・ただしWHERE句無しDELETEはトランザクション中でも使える。
これはどういうことか確認。
マニュアルでは、AUTOCOMMITモード(つまりtransactionのbegin - commit(rollback)内でない)場合はTRUNCATEと同様に働くとのこと。
WHERE 節が指定されていない DELETE では、すべてのレコードが削除されます。AUTOCOMMIT モードで実行された場合、WHERE 節なしの DELETE は TRUNCATE と同じように動作します。MySQL4.1 リファレンス6.4.5. DELETE 構文
つまりトランザクション中のWHERE句なしDELETEは、TRUNCATEに置き換わらず、通常のDELETEとして処理されるということか。
上記リファレンスの文面が MySQL5.1ではDELETEにもTRUNCATEにも載ってなくてちょっと混乱した。
0 件のコメント:
コメントを投稿