Ich habe eine Datenbanktabelle, die jede Zeile eine einzelne Aufgabe darstellt. Die Zeile enthält auch ein Feld [Completed], das wahr sein sollte, wenn die Aufgabe bei jeder anderen Gelegenheit erfolgreich oder falsch ausgeführt wurde.Was ist der beste Ansatz zum Aktualisieren einer Datenbanktabelle basierend auf dem Ergebnis der nicht transaktionalen Task
Nehmen wir an, dass die Aufgabe durch die Funktion unten dargestellt:
bool Task(int TaskId);
, die auf Erfolg der Aufgabe und falsch bei Ausfall true zurück.
Was ist der beste Weg, um das Feld Completed der Task-Tabelle basierend auf dem Ergebnis der Task zu aktualisieren?
A haben Ansätze gedacht:
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]
Wie kann ich die Aufgabe gelingt aber Datenbank-Update vermeiden kann nicht abgeschlossen werden?
Vielleicht ist es vor Kaffee für mich, aber bis die Transaktion festgeschrieben wird - die boolesche Funktion wird false zurückgeben, es sei denn, Sie lesen schmutzige Daten (READ UNCOMMITTED). –
Die boolesche Funktion ist nicht datenbankbezogen. Es tut etwas, was nicht mit der Datenbank zusammenhängt. Betrachten Sie den Code psevdo-code. – Blim