SQL Server ではExplicit Transactions
、ユーザーがキーワードを使用してトランザクションを明示的に開始し、すべての操作がエラーなしで完了したら、エラーが発生した場合にBEGIN TRANSACTION
キーワードを使用してトランザクションをコミットできます。COMMIT TRANSACTION
例外として、進行中のトランザクションのどこでも、キーワードを使用して作業を元に戻すことができますROLLBACK TRANSACTION
Write Ahead 戦略
SQL サーバーはWrite Ahead Strategy
、トランザクションの原子性とデータの耐久性を確認するために使用します。ステップ
- データ ページをバッファ キャッシュにロードします。
- バッファ内のコピーを更新します。
- ログ キャッシュにログ レコードを作成します。
- チェックポイント プロセスを介してログ レコードをディスクに保存します。
- データをディスクに保存します。
したがって、トランザクションを ROLLBACK することにした場合は、これらすべてのステップのプロセスのどこでも。ディスク上の実際のデータは変更されません。
私のおすすめ
BEGIN TRY
BEGIN TRANSACTION
------ Your Code Here ------
---- IF everything Goes fine (No errors/No Exceptions)
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION --< this will ROLLBACK any half done operations
-- Your Code here ---------
END CATCH