Multiuser-sicheres inkrementieren in DB

04/12/2007 - 11:19 von Jan Lorenz | Report spam
Hallo,

ich möchte in meinem Programm, das im Multiuser-Betrieb làuft einen Wert aus
eine DB lesen, inkrementieren und zurückschreiben.
Was wàre die sichere Methode, so dass jeder User auch wirklich eine
eindeutigen Wert liest?

Viele Grüße
Jan
 

Lesen sie die antworten

#1 Christian Zimmermann
04/12/2007 - 12:43 | Warnen spam
Hallo Jan,

Jan Lorenz schrieb:

ich möchte in meinem Programm, das im Multiuser-Betrieb làuft einen Wert aus
eine DB lesen, inkrementieren und zurückschreiben.
Was wàre die sichere Methode, so dass jeder User auch wirklich eine
eindeutigen Wert liest?



Den Datensatz sperren, bis der neue Wert geschrieben wurde. Allerdings
sind für den Fehlerfall noch Verhaltensweisen festzulegen (Wie lange
darf der Satz gesperrt werden (timeout)? Dürfen Werte verworfen werden
oder muss der inkremetierte Wert auch in der DB auftauchen?). Welche DB
benutzt du? Ggf. in microsoft.public.de.vb.datenbank nachfragen.

Access z. B. hat, was die Wertermittlung angeht, eine built-in
Funktionalitàt, den Autowert, der aber immer nur um eins hochzàhlt, also
keinen komplexen Bildungsmechanismus abbilden kann, und beim Hinzufügen
eines neuen Satzes gesetzt wird. Für deine Zwecke möglicherweise
ausreichend. Evt. Nachteil: der Wert wird auch inkrementiert, ohne das
der entsprechende Satz geschrieben werden muss. Wenn Wertlücken kein
Problem darstellen kann man das benutzen. Vorteil: es treten nahezu
keine Verzögerungen für die User auf.

Gruß

Christian

Ähnliche fragen