Thema: Delphi Problem mit Generator

Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.434 Beiträge
 
Delphi 7 Professional
 
#8

AW: Problem mit Generator

  Alt 5. Apr 2024, 09:59
Oder statt Query.ExecSQL('ALTER SEQUENCE ' + GeneratorName + ' RESTART WITH ' + Value.ToString); für Value.ToString select Max(id) + 1 from tabelle nehmen.

Oder, da es ja bei diesem Update ein grundsätzliches Problem ist:
Value := 1 + GetCurrentGeneratorValue(FGeneratorReadQuery, Generator);
Oder hier einfach den nächsten Generatorwert auslesen, also sinngemäß:
Value := GEN_ID(GeneratorName, 1);

Das Problem scheint zu sein, dass in der "alten" Datenbank der Wert des Generators der zuletzt vergebene Wert zu sein scheint, während die "neue" Datenbank diesen Wert als den nächsten zu vergebenden Wert betrachtet. Beim ersten Lesen des Generatorwertes kracht es daher einmalig. Danach ist der Generatorwert dann "höher" als die letzte ID und somit ist der Fehler (unelegant) behoben.

Grob formuliert:

Alte Datenbank erhöht den Wert des Generators und gibt ihn dann aus.
Neue Datenbank gibt den Wert des Generators aus und erhöht ihn dann.

Daraus resultiert die einmalig "doppelte" Ausgabe eines Wertes, was dann nach einem einmaligen Fehler "korrigiert" erscheint.
  Mit Zitat antworten Zitat