Изменение свойства (CHANGE)
Оператор измене ния свойства позволяет изменять значения одного свойства (записи) на значение другого свойства (чтения) для всех наборов объектов, для которых значение третьего свойства (условия) не NULL. Условие в этом операторе можно не задавать (в этом случае оно считается равным TRUE).
Изменяемые свойства
В общем случае записываемое свойство должно быть первичным, однако в платформе также допускается запись в свойства, созданные при помощи оператора выбора. В этом случае для записываемого свойства определяется условие, которое выполняется в операторе выбора, при помощи которого это записываемое свойство создано, и запись идет в свойство результата, который соответствует этому условию. Соответственно, все свойства, в которые допускается запись, будем называть изменяемыми.
Помимо вышеперечисленных, изменяемыми свойствами также являются свойства, созданные при помощи оператора экстремума и логических операторов (которые по сути являются разновидностями оператора выбора)
Язык
Для объявления действия, реализующего изменения свойства, используется оператор CHANGE.
Примеры
// установить всем клиентам у кого сумма заказа больше 100 скидку в размере 15 процентов
CLASS Customer;
discount = DATA NUMERIC[5,2] (Customer);
totalOrders = DATA NUMERIC[14,2] (Customer);
setDiscount {
discount(Customer c) <- 15 WHERE totalOrders(c) > 100;
}
discount = DATA NUMERIC[5,2] (Customer, Item);
in = DATA BOOLEAN (Item);
// изменить скидку для выбранных товаров для клиента
setDiscount (Customer c) {
discount(c, Item i) <- 15 WHERE in(i);
}
// скопировать свойство g в свойство f
f = DATA INTEGER (INTEGER);
g = DATA INTEGER (INTEGER);
copyFG {
f(a) <- g(a);
}