3

次のステートメントはアトミック操作ですか?

UPDATE [table1]
SET column1=@val1, column2.WRITE(@val2, NULL, 0) WHERE table1_id=@id

または、エラーが発生した場合に列がまったく更新されないか、または両方が更新されるように、トランザクション内に配置する必要がありますか?

列は次のように定義されます。

column1 int not null, 
column2 varbinary(max) not null 
4

2 に答える 2

2

一言です。SQL Server では、各ステートメントが暗黙のトランザクションを実行します。詳細が必要な場合は、別の回答があります。

単一のステートメントを処理するトランザクションは何をしますか?

于 2013-05-16T18:37:41.123 に答える
1

Autocommit Transactionsに関する MSDN リファレンスには、次のように記載されています。

自動コミット モードは、SQL Server データベース エンジンの既定のトランザクション管理モードです。すべての Transact-SQL ステートメントは、完了するとコミットまたはロールバックされます。ステートメントが正常に完了すると、コミットされます。エラーが発生すると、ロールバックされます。

UPDATE .WRITE を使用して ADO.NET で大きな値 (最大) のデータを変更することは、UPDATE ステートメント トランザクションに影響を与えることが文書化されていません。

于 2013-05-16T19:12:57.927 に答える