各行が1つのタスクを表すデータベーステーブルがあります。この行には、[Completed]フィールドも含まれています。このフィールドは、タスクが正常に完了した場合はtrueになり、それ以外の場合はfalseになります。タスクの成功した場合にTRUE、失敗するとfalseを返します非トランザクションタスクの結果に基づいてデータベーステーブルを更新する最適な方法は何ですか
bool Task(int TaskId);
を:
タスクは、以下の関数で表されることを前提としています。
Taskの結果に基づいてTask TableのCompletedフィールドを更新する最も良い方法は何ですか?
Aはアプローチを考えている:
A.
BEGIN TRANSACTION
UPDATE TASKS SET Completed = 1 WHERE [email protected]
if (Task(SpecificTask))
COMMIT TRANSACTION
else
ROLLBACK TRANSACTION
B.
if (Task(SpecificTask))
UPDATE TASKS SET Completed = 1 WHERE [email protected]
がどのようにタスクが続く回避することができますが、データベースの更新が完了することができないのですか?
おそらく、私にとってはBefore Coffeeですが、トランザクションがコミットされるまでは、不正なデータを読み取っていない限り、ブール関数はfalseを返します(READ UNCOMMITTED)。 –
ブール関数はデータベースに関連していません。それはデータベースと関係のない何かをします。コードpsevdo-codeを考えてみましょう。 – Blim