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.