0

Trigger bei Datenimport

Hallo,

ich habe folgenden Trigger bei neuen Datensätzen, der beim Anlegen von Datensätzen funktioniert:
UUID := http("GET", "https://www.uuidtools.com/api/generate/v1").result

Werden jedoch neue Datensätze über „Daten importieren“ angelegt, bleibt das UUID-Feld leer, mir scheint der Trigger arbeitet nicht.
Auch eine anschliessende Massenbearbeitung mit dem Versuch die UUID mit gleicher Formel als einen berechneten Wert anzulegen scheitert, da dann alle Datensätze die gleiche UUID erhalten.

Weiß dazu jemand Rat?
Vielen Dank!

5 Antworten

null
    • T_Bartzsch
    • vor 10 Monaten
    • Gemeldet - anzeigen

    Du kannst einen Button erstellen mit folgendem Script:

    for i in (select DEINETABELLE where not UUID) do

    i.UUID := http("GET", "https://www.uuidtools.com/api/generate/v1").result

    end

    Damit kannst du manuell alle Datensätze ohne UUID generieren lassen...

    Dieses Script könnte man auch in den Datenabankoptionen beim öffnen der Datenbank ausführen lassen

      • Puff
      • vor 10 Monaten
      • Gemeldet - anzeigen

       Hallo,

      vielen Dank für den Hinweis.
      Es wäre natürlich möglich das manuell nachzuholen,
      Aber gibt es keine Möglichkeit, dass, wenn beim Import neue Records angelegt werden, der Trigger funktioniert? Das ist doch eigentlich der Sinn eines Triggers.

    • T_Bartzsch
    • vor 10 Monaten
    • Gemeldet - anzeigen

    Ein Import von mehreren Datensätzen löst aber keine Trigger aus soweit ich weiß. Nur das Anlegen jeweils eines neuen Datensatzes...

    Wie umfangreich sind denn die importe jeweils? Es gäbe sonst noch die Variante, ein mehrzeiliges Textfeld anzulegen, in einer Art Dashboard, wohinein man die zu importierenden Daten als CSV kopiert. Ein Trigger nach Änderung könnte dann die neuen Daten aufsplitten und jeweils neue Datensätze anlegen - und dabei natürlich auch das UUID Feld füllen...

      • Puff
      • vor 10 Monaten
      • Gemeldet - anzeigen

       Ja, es scheint, dass ein Import den Trigger nicht auslöst. Datenbanktechnisch wird aber beim Import ein neuer Datensatz angelegt, daher wäre es meiner Meinung nach, zwingend den Trigger für neue Datensätze auszulösen.
      @ Ninox: Kann jemand von Ninox dazu etwas sagen?

      Danke auch für den Vorschlag, allerdings darf die UUId ja nur einmalig vergeben werden, damit darauf sicher referenziert werden kann. Ein Trigger nach Änderung würde diesem Konzept entgegenstehen.

      • T_Bartzsch
      • vor 10 Monaten
      • Gemeldet - anzeigen

       ja, daher das for i in (select DEINETABELLE where not UUID) do .. damit werden nur Datensätze mit leeren UUID belegt... alle Datensätze mit bereits vergebener UUID werden ignoriert... und die anderen, leeren sind ja zwangsläufig die neu importierten...