Показать сообщение отдельно
Старый 25.08.2011, 12:30   #3  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2480 (88) +++++++++
Регистрация: 20.08.2005
Насколько я понимаю, связано это с генерацией и вставкой значения RecId.

Т.е. сначала сохраняются записи во временную таблицу - получается кол-во записей для вставки (при этом, recId присваивается увеличивающее значение, начиная с единицы).
Затем, выделяется нужный диапазон в systemSequences
Далее, происходит вставка в целевую таблицу, RecId присваивается значение из временной таблицы + смещение

Если делать это все через прямую вставку в таблицу, то посчитать кол-во записей перед вставкой все равно придется, но между расчетом и вставкой пройдет какое-то время, за которое могут быть вставлены новая записи в исходную таблицу, соответствующие поисковому запросу. И значение в systemSequences разъедется с реальным в таблице.
Что бы этого избежать, придется запускать сериализуемую транзакцию, которая очень легко может заблокировать всю исходную таблицу на момент операции (да и не сталкивался я в DAX с использованием таких транзакций)
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: Logger (3).