Оператор 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;
}