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

Оператор APPLY

Оператор APPLY - создание действия, применяющего изменения в базу данных.

Синтаксис

APPLY [nestedBlock] [SERIALIZABLE] [action]

где nestedBlock имеет один из двух вариантов синтаксиса:

NESTED LOCAL
NESTED (propertyId1, ..., propertyIdN)

Описание

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

Параметры

  • LOCAL

    Ключевое слово. Если указывается, то все локальные свойства сохранят свои изменения после выполнении оператора APPLY.

  • propertyId1, ..., propertyIdN

    Список локальных свойств. Каждый элемент списка является идентификатором свойства. Указанные в списке локальные свойства сохранят свои изменения после выполнении оператора.

  • SERIALIZABLE

    Ключевое слово, при указании которого устанавливается уровень изолированности транзакции Serializable.

  • action

    Контекстно-зависимый оператор, описывающий действие, которое будет выполнено перед применением изменений. Выполняется в одной транзакции с применением изменений.

Примеры

CLASS Sku;
id = DATA INTEGER (Sku);

in = DATA LOCAL BOOLEAN (Sku);
applyIn() {
in(Sku s) <- TRUE WHERE id(s) == 123;
APPLY NESTED (in[Sku]) {};
IF canceled() THEN
MESSAGE applyMessage();
FOR in(Sku s) DO
MESSAGE id(s); // показывает '123'
}

calculateInTransaction() {
APPLY {
id(Sku s) <- (GROUP MAX id(Sku ss)) (+) 1; // проставляем новый код внутри транзакции
}
}