Документация на documentation.lsfusion.org скоро станет недоступной, используйте, пожалуйста, https://docs.lsfusion.org/ru.

Перейти к концу метаданных
Переход к началу метаданных

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

Синтаксис

APPLY [nestedBlock] [SERIALIZABLE] [action]

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

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

Описание

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

Параметры

LOCAL

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

propertyId1, ..., propertyIdN

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

SERIALIZABLE

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

action

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

Примеры

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
 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; // проставляем новый код внутри транзакции 
    }
}

  • Нет меток