Primärschlüssel füllen
Siehe auch: Änderungen später speichern
Ereignisaktion - Kurzfassung
Zweck: Ruft für eine neue oder kopierte Entität schon vor dem Speichern (Erstellen) eine interne ID (als Primärschlüssel) ab, damit diese sofort (z. B. als Referenz) verwendet werden kann.
Die Ereignisaktion Primärschlüssel füllen kann verwendet werden, um das Primärschlüssel-Feld "ID" id einer neuen Entität vorzeitig mit einem vom System bestimmten Wert zu füllen, damit dieser im Kontext der laufenden Ereignisbehandlung bereits verarbeitet werden kann, bevor die Entität effektiv in der Datenbank gespeichert ist. Dies ist z. B. dann erforderlich, wenn im Zuge einer Ereignisbehandlung für das Ereignis "Erstellen" sofort auch Referenzen auf die neue Entität (z. B. in den Daten anderer Entitäten) eingerichtet werden sollen.
Als Primärschlüssel einer Entität gilt der Long-Wert, den das System dem Feld "ID" (id) beim Speichern automatisch zuweist. Bis zum erfolgreichen Abschluss der Transaktion für das Ereignis "Erstellen" enthält das Feld "ID" (id) einer Entität, die neu angelegt oder kopiert wurde, üblicherweise den Wert 0. Dabei ist es unerheblich, ob die noch nicht gespeicherte Entität per Klick auf "Neu" oder "Kopieren" im Ribbon oder z. B. durch eine Erzeuge Instanz-Ereignisaktion entstanden ist.
►HINWEISE◄
Scheitert eine Transaktion nach dem Ausführen von Primärschlüssel füllen mit Fehler, wird sie durch eine Abbrechen "zurückgerollt" oder die Entität vom Benutzer ohne Speichern verworfen, ist die bereits ausgegebene ID für den betreffenden Entitätstyp "verloren". Sie wird also nicht erneut für denselben Entitätstyp ausgegeben.
Die Ereignisaktion Änderungen später speichern impliziert den Effekt von Primärschlüssel füllen und zwar im Gegensatz zum Speichern, das "später" (bei Abschluss der Transaktion) stattfindet, sofort beim Ausführen der Aktion.
Konfiguration
Die Ereignisaktion Primärschlüssel füllen verwendet keine Parameter und bezieht sich immer auf das aktuelle Bezugsobjekt.
Beim Bezugsobjekt muss es sich um eine Entität handeln, sonst tritt ein Fehler auf.
Verfügt das Bezugsobjekt bereits über eine ID (id), die nicht 0 ist, bleibt die Ereignisaktion Primärschlüssel füllen wirkungslos. Ob die Entität mit der betreffenden ID bereits gespeichert wurde, ist dabei unerheblich.
Wird Primärschlüssel füllen mit demselben Bezugsobjekt wiederholt ausgeführt, weist nur der erste Aufruf eine ID zu. Die folgenden Aufrufe sind wirkungslos.
Beispiel
Beim Erstellen eines neuen Firmenkontos mit dem Firmentyp "Spediteur" (FWD) soll für diese Firma automatisch ein neues Adressbuch für Empfängeradressen angelegt werden. Dabei soll als Besitzer des Adressbuchs die neue Firma gelten und nicht die beim Erstellen einer Entität automatisch vorbelegete Firma der Session. Die Ereignisaktion Primärschlüssel füllen wird dabei benötigt, da beim Auslösen des "Erstellen"-Ereignisses (also beim "Speichern" des neuen Firmenkontos) dessen ID (id) noch den Wert 0 hat. Beim automatischen Erstellen des neuen Adressbuchs muss aber die besitzende Firma über das Feld "Besitzer" (ownerId) über ihre ID (id) identifiziert werden.
Konfiguration:
Innerhalb einer Ereignisbehandlung für das "Erstellen"-Ereignis (s. Allgemein (Ereignisse)) im Kontext eines neuen Firmenkontos, dem im Feld "Firmentypen" (types) der Firmentyp "Spediteur" (FWD) zugeordnet ist, werden die rechts abgebildeten Ereignisaktionen konfiguriert:
►ANMERKUNG◄ Unterhalb sollte weitere Zuordnungen für das Adressbuch folgen (z. B. Name, Firmentyp), auf die hier aber nicht genauer eingegangen werden soll. |
|
►HINWEIS◄ Die zur Laufzeit verwendete Anmeldung muss ausreichende Berechtigungen zum Erstellen des Firmenkontos und eines Adressbuchs für die neue Firma gewährleisten, sonst scheitert die Transaktion insgesamt mit einem Fehler. Auch wenn die Firma der Session die neu angelegte Firma (per Standard) besitzen wird, darf sie für diese Firma nicht automatisch ein Adressbuch erstellen. Über Firmenfreigaben kann das erreicht werden.