пример мешки и килограммы
Например, есть 2 взаимно зависящих друг от друга поля поля. Значение во втором должно быть всегда в 2 раза больше чем в первом и наоборот.
Делаем код действия при изменении в первом поле:
=: set(table: $#ntn; field: 'field_2' = math`$#nfv * 2`; where: 'id' = #id)
Делаем код действия при изменении во втором поле:
=: set(table: $#ntn; field: 'field_1' = math`$#nfv / 2`; where: 'id' = #id)
Что произойдет при изменеии в первом поле — во второе будет поставлено новое значение и там сработает триггер на изменение и рассчитав значение для первого поля код действия его туда установит.
Если при этом изменения в первом поле не произошло — вся цепочка кодов остановится.
Будьте внимательны с такими взаимо-зависимыми встречными кодами действий — если они не приходят в равновесие — сервер зависнет в бесконечном цикле, пока не сработает таймаут.
Особенность такого расчета для строки добавления?
В строке добавления нет действий — поэтому в ней этот прием не работает. Вы можете оставить изменяемым какое-то ключевое поле, а остальные рассчитывать кодом только при добавлении
, заблокировав их именно при добавлении.
В этом случае можно перенести добавление во временную таблицу, а строку добавления отключить. Пример смотрите здесь: https://youtu.be/Bn1P_qY3Ruo?t=1048