Перейти к основному содержимому
Версия: 7.0

Оператор RECALCULATE

Оператор RECALCULATE создает действие, которое пересчитывает хранимые значения материализованного свойства.

Синтаксис

RECALCULATE [CLASSES | NOCLASSES] propertyId(expr1, ..., exprN) [WHERE whereExpr]

Описание

Оператор RECALCULATE создает действие, которое заново вычисляет хранимые значения материализованного свойства из его определения для каждого набора аргументов, на котором whereExpr не равно NULL. Список аргументов может вводить новые локальные параметры; такие параметры соответствуют перебираемым объектам и не являются параметрами создаваемого действия.

Параметры

  • propertyId

    Идентификатор свойства, хранимые значения которого пересчитываются. Свойство должно быть материализованным.

  • expr1, ..., exprN

    Список выражений или типизированных параметров, задающих аргументы свойства. При использовании типизированных параметров можно как ссылаться на уже объявленные параметры, так и объявлять новые локальные; при использовании выражений новые локальные параметры добавлять нельзя. Количество элементов в списке должно совпадать с количеством параметров свойства.

  • CLASSES | NOCLASSES

    Ключевое слово, ограничивающее то, что пересчитывается. CLASSES пересчитывает только данные о классах свойства, но не значения; NOCLASSES пересчитывает только значения, считая данные о классах корректными. Если ничего не указано, пересчитываются значения (а данные о классах при необходимости обновляются).

  • whereExpr

    Выражение, значение которого является условием, при котором свойство пересчитывается. Если не указано, считается равным TRUE.

Примеры

sum = GROUP SUM sum(OrderDetail od) BY order(od) MATERIALIZED;

// пересчитать все хранимые значения материализованного свойства
recalculateSum() {
RECALCULATE sum(Order o);
}

// пересчитать только значения для заказов одного клиента, считая данные о классах корректными
recalculateCustomerSum(Customer c) {
RECALCULATE NOCLASSES sum(Order o) WHERE customer(o) = c;
}