Оператор 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; // проставляем новый код внутри транзакции
}
}