transaction を使用せずに削除コマンドをロールバックする方法は? できない場合、切り捨てと削除の違いは何ですか?
3 に答える
この場合はロールバックできませんが、完全復旧モデルを使用している場合は、データベースを削除コマンドを発行する前の時点に戻すことができます。
DELETE または TRUNCATE (および他のほとんどの操作) は、それらがまだコミットされていないトランザクションの一部である場合にのみロールバックできます。または、削除/切り捨てられたデータをバックアップから復元することもできます。
TRUNCATE と DELETE にはいくつかの違いがあります。特に、TRUNCATE はテーブルを空にすることしかできませんが、DELETE は指定した行だけを削除します。TRUNCATE は、行レベルではなくページ レベルでデータの割り当てを解除してログに記録します。これにより、通常、テーブルのコンテンツ全体を削除する場合、TRUNCATE は DELETE よりも効率的な方法になります。
ROLLBACK
トランザクションなしでは操作できません。おそらく暗黙の transactionsCOMMIT
を使用できますが、 orをROLLBACK
明示的に呼び出す必要があります。ただし、より適切に制御するには、BEGIN TRANSACTION...COMMIT / ROLLBACK
とにかくステートメントをブロックでラップすることをお勧めします。このようにして、混乱を避け、IMPLICIT_TRANSACTION
設定を使用する必要がなくなります。