Цитата:
Сообщение от
MikeR
Для карсоты решения

еще раз приведу утверждения
5 Корректный код
X++:
while select ItemId
from salesLine
{
select firstOnly forUpdate ItemType, ItemBuyerGroupId
from inventTable
where inventTable.ItemId == salesLine.ItemId;
If (inventTable && (inventTable.ItemType == InventItemType::Item))
{
ttsBegin;
inventTable.ItemBuyerGroupId = ;
inventTable.update();
ttsCommit;
}
}
Вот до кучи еще вариант: (без всяких ttsbegin вообще)
X++:
while select ItemId
from salesLine
join inventTable
where inventTable.itemid == salesLine.itemId &&
inventTable.ItemType == InventItemType::Item
{
update_recordset inventTableUpd
setting inventTableUpd.ItemBuyerGroupId =
where inventTableUpd.ItemId == salesLine.ItemId;
}
Кстати к вопросу о производительности БД. Множество ttsbegin --> ttscommit не всегда лучший вариант для производительности БД.
Объединение множественных обновлений в одну транзакцию - это конечно блокировки - но более производительный вариант для БД ИХМО.