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

Предыдущее значение (PREV)

Оператор предыдущего значения создает свойство, которое возвращает значение заданного выражения на начало сессии изменений (то есть текущее значение в базе данных без учета изменений, сделанных в сессии). Вместе с производными от него операторами изменений этот оператор обеспечивает отслеживание изменений в сессии: он дает доступ к состоянию "до", с которым сравнивается текущая сессия.

к сведению

Этот оператор всегда использует область видимости начала сессии. О том, как это взаимодействует с обработкой событий, см. канонический раздел про событийный режим.

Язык

Для объявления свойства, возвращающего предыдущее значение, используется оператор PREV.

Примеры

CLASS Order;
sum = DATA NUMERIC[10,2] (Order);

// Самый частый случай — чтение значения "до" внутри обработчика события, реагирующего
// на изменение. PREV(sum(o)) возвращает значение на начало сессии — значение из базы,
// игнорирующее изменения в текущей сессии. Предикаты изменения (CHANGED, SET, DROPPED,
// ...) являются производными от PREV — это булевы сравнения с текущим значением, а сам
// PREV даёт доступ к фактическому предыдущему значению.
WHEN CHANGED(sum(Order o)) DO
MESSAGE 'Сумма изменена: ' + PREV(sum(o)) + ' → ' + sum(o);