Einzelnen Beitrag anzeigen

bnreimer42

Registriert seit: 26. Mai 2013
Ort: Erlangen, Franken
124 Beiträge
 
Delphi 12 Athens
 
#4

AW: neuere Datzensätze fehlen beim Abfragen

  Alt 14. Mai 2017, 20:40
Hallo,

schau Dir die Sache mit den Transaktionen an und schalte alle Automatik der Client-Komponenten aus.

Ist eigentlich ganz einfach, ähnlich wie der Umgang mit einer Datei.

Am Anfang Begin Transaction (ähnlich Datei öffnen)
Alle Statements ändern innerhalb der laufenden Transaktion Daten. Andere Transaktionen sehen die Änderungen erst mal nicht. (ähnlich schreiben in gesperrte Datei)
Wenn Du fertig bist: Commit (ähnlich Datei schließen)
Wenn etwas schief gelaufen ist: Rollback, d.h. alles, was seit Begin Transaction geschehen ist, wird ungeschehen gemacht (Außer Spezialitäten, wie z.B. Erhöhen einer Sequenz)

Beim Lesen beginnst Du auch mit Begin Transaction
Bis zum Commit (oder Rollback) bleibt bei Repeatable Read der Datenbestand gleich
Wenn Du neue Daten erwartest, vor dem Lesen der Daten Commit einschieben.

Alternativ setzt Du die Lesetransaktion auf ReadCommited, dann siehst Du da immer alle Änderungen, die irgendjemand Commited hat.


Die meisten Komponenten machen das Begin Transaction alleine, d.h. wenn keine Transaction offen ist, öffnen sie eine.


Das Funktioniert - ich denke bei ZEOS auch - indem Du zusätzlich explizit ein Transaktionsobjekt anlegst und mit der Query oder Table verbindest.
Das Objekt hat auch die Methoden BeginTransaction, Commit und Rollback. (oder so ähnlich)
Björn Reimer
  Mit Zitat antworten Zitat