[Gelöst] Zeitlücke zw. Laden einer Fkt/Triggers und MODIFY

27. April 2009 09:49

hi,
ich bin gerade am grübeln ob folgender Sachverhalt in NAV nicht zu Datenverlust führen kann:

Zwischen dem Aufruf eines Triggers oder einer Funktion und des tatsächlichen Schreibens in die DB ( MODFIY) ist ja ein Zeitdelta in dem die Daten in einer globalen Recordvariable bearbeitet / modifiziert u. gehalten werden.

kann es nicht sein dass in diesem Zeitdelta eine andere Fkt "schneller" ist und vorher ein MODIFY auslöst und meine Fkt mit alten Daten arbeitet und dann die Daten der anderen Fkt überschreibt ?

Das wäre ja eigentlich fatal wenn sowas möglich wäre - wie verhindert man das in NAV ?
Zuletzt geändert von dayscott am 27. April 2009 13:36, insgesamt 1-mal geändert.

Re: Zeitlücke zw. Laden einer Fkt/Triggers und MODIFY

27. April 2009 10:02

dayscott hat geschrieben:kann es nicht sein dass in diesem Zeitdelta eine andere Fkt "schneller" ist und vorher ein MODIFY auslöst und meine Fkt mit alten Daten arbeitet und dann die Daten der anderen Fkt überschreibt ?

Durchaus! Jedoch wirst du in den meisten Fällen (zumindest bei SQL?) eine Fehlermeldung erhalten: "Ein anderer Anwender hat ...", da der Zeitstempel des Datensatzes nicht mehr übereingestimmt hat.

Das wäre ja eigentlich fatal wenn sowas möglich wäre - wie verhindert man das in NAV ?

Dafür gibts den Befehl LOCKTABLE, der dafür sorgt, dass andere Transaktionen deinen Record nicht verändern können.
Schau mal z.B. in die Codeunit 80 und 12, dort findest du einige LOCKTABLEs.