8

transaction を使用せずに削除コマンドをロールバックする方法は? できない場合、切り捨てと削除の違いは何ですか?

4

3 に答える 3

4

この場合はロールバックできませんが、完全復旧モデルを使用している場合は、データベースを削除コマンドを発行する前の時点に戻すことができます。

于 2015-07-03T21:34:48.677 に答える
2

DELETE または TRUNCATE (および他のほとんどの操作) は、それらがまだコミットされていないトランザクションの一部である場合にのみロールバックできます。または、削除/切り捨てられたデータをバックアップから復元することもできます。

TRUNCATE と DELETE にはいくつかの違いがあります。特に、TRUNCATE はテーブルを空にすることしかできませんが、DELETE は指定した行だけを削除します。TRUNCATE は、行レベルではなくページ レベルでデータの割り当てを解除してログに記録します。これにより、通常、テーブルのコンテンツ全体を削除する場合、TRUNCATE は DELETE よりも効率的な方法になります。

于 2013-04-04T21:13:12.477 に答える
2

ROLLBACKトランザクションなしでは操作できません。おそらく暗黙の transactionsCOMMITを使用できますが、 orをROLLBACK明示的に呼び出す必要があります。ただし、より適切に制御するには、BEGIN TRANSACTION...COMMIT / ROLLBACKとにかくステートメントをブロックでラップすることをお勧めします。このようにして、混乱を避け、IMPLICIT_TRANSACTION設定を使用する必要がなくなります。

于 2013-03-18T09:13:46.817 に答える