Table of Contents

Temporäre Autowerte / ID's

Informationen

  • Kategorien: Kernel
  • Version: Developer.17533
  • Veröffentlichungsdatum: Donnerstag, 9. Februar 2023
  • Entwickler: Götzen
  • Benötigt Datenbankänderung: Nein
  • Betreff: Temporäre Autowerte / Entity-IDs

Beschreibung

Bei der Funktionalität des CommitLock (Klassenformelfunktion SetCommitLocked()) wurden bisher die EntityID's und die Autowerte "hochgezählt" und deren Nummern somit "verrbaucht" Dies wird nun vermieden in dem für ID-Nummern und Autowert-Zähler auch temporäre Nummern vergeben werden. Es wird somit auch keine Transaktion geöffnet um diese Zähler zu aktualisieren.

Diese EntityID's und Autowerte müsseb aber trotzdem eindeutig sein, denn sie werden ja in die Datenbank gespeichert. Nur am Schluss wird die Transaktion mit einem Rollback "zurückgerollt". Dies erreichen wie folgt:

Umsetzung Objekt ID's: Die Objekt ID's bekommen einen eigenen Nummernkreis, der während des CommitLock verwendet wird. Standardmäßig 'FFFFFFFF:00000001' bis 'FFFFFFFF:FFFFFFFF'. Falls dieser im Projekt schon verwendet wurde lässt sich in der Tabelle SysIdFactory ein anderer Wert festlegen. Als Klassenname ist in diesem Falle "\(TemporaryIds\)" zu verwenden. Die Funktion "Objekte prüfen" testen nun auch, ob der Nummernkreis schon vergeben ist. Falls ja, kann man mit der Funktion "ID Nummernkreise korrigieren" den Eintrag "\(TemporaryIds\)" erstellen lassen.

Umsetzung Autowerte: Für die Autowerte muss die Tabelle SysAutoValue um das Feld "FormatForTemp" erweitert und ergänzt werden. Dies hat die gleiche Semantik wie das Feld "Format". Mit dem Unterschied, dass das Feld "FormatForTemp" zur Formatierung der Autowerte während eines CommitLock verwendet wird. Somit kann man dem Autowert während des Commitlock beispielsweise ein Präfix voranstellen um einen eindeutigen Autowert zu erzeugen. Sollte kein zusätzlicher Autowert angegeben sein, wird wie bisher der erste Autowert genommen. Dies kann allerdings zu Constraintverletzungen während des CommitLock führen.