0

Transaktionsklammern aufbrechen

Ninox bietet Möglichkeiten, den Transaktionskontext aufzubrechen mit der Anweisung do as deferred.

Angenommen, bei Änderung eines Rechnungsstatus soll ein externes System informiert werden. Dann können Sie mit do as deferred verhindern, dass dieser API-Aufruf, der im Rahmen eines Triggers ablaufen soll, nachfolgende Transaktionen blockiert.

do as deferred
      http(...)
end

Sie können das Ergebnis aus dem API-Call auch weiterverwenden. Wichtig ist aber, dass diese Weiterverwendung selbst wieder einen neuen Transaktionskontext erzeugt, ansonsten wäre schon der http() Aufruf Teil einer schreibenden Transaktion.

let invoice := this;
do as deferred
     let response := http(...);
     do as deferred
          invoice.Message := text(response.result)
     end
end

 

In diesem Fall ist das erste do as deferred eine lesende Transaktion, da keine Daten geändert werden. Das geschachtelte do as deferred ist eine schreibende Transaktion, da ein Feld des Rechnungsdatensatzes “invoice” geändert wird.

💡  Weitere Informationen finden Sie unter Performance der Skripte optimieren.

Antwort

null