各行が単一のタスクを表すデータベース テーブルがあります。この行には [Completed] フィールドも含まれており、タスクが正常に完了した場合は true、それ以外の場合は false になります。
Task が以下の関数で表されていると仮定します。
bool Task(int TaskId);
タスクが成功した場合は true を返し、失敗した場合は false を返します。
タスクの結果に基づいてタスク テーブルの完了フィールドを更新する最良の方法は何ですか?
A は次のアプローチを考えています。
A.
BEGIN TRANSACTION
UPDATE TASKS SET Completed = 1 WHERE TaskId=@SpecificTask
if (Task(SpecificTask))
COMMIT TRANSACTION
else
ROLLBACK TRANSACTION
B.
if (Task(SpecificTask))
UPDATE TASKS SET Completed = 1 WHERE TaskId=@SpecificTask
タスクが成功するのを回避するにはどうすればよいですか? データベースの更新は完了できません。