![]() |
#3 |
Участник
|
Насколько я понимаю, связано это с генерацией и вставкой значения RecId.
Т.е. сначала сохраняются записи во временную таблицу - получается кол-во записей для вставки (при этом, recId присваивается увеличивающее значение, начиная с единицы). Затем, выделяется нужный диапазон в systemSequences Далее, происходит вставка в целевую таблицу, RecId присваивается значение из временной таблицы + смещение Если делать это все через прямую вставку в таблицу, то посчитать кол-во записей перед вставкой все равно придется, но между расчетом и вставкой пройдет какое-то время, за которое могут быть вставлены новая записи в исходную таблицу, соответствующие поисковому запросу. И значение в systemSequences разъедется с реальным в таблице. Что бы этого избежать, придется запускать сериализуемую транзакцию, которая очень легко может заблокировать всю исходную таблицу на момент операции (да и не сталкивался я в DAX с использованием таких транзакций)
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: Logger (3). |
|
![]() |
||||
Тема | Ответов | |||
Временные таблицы и их временные файлы | 6 | |||
insert recordset join таблицы без вывода поля | 7 | |||
Вопрос по insert_recordset | 25 | |||
Осторожно insert_recordset | 11 | |||
Не работает Insert_Recordset | 21 |
|