Наткнулся на прелести обновления индексированных полей InMemory таблиц
Пример 3 разных попыток обновления
X++:
TmpFontName tmp;
;
//(update_recordset)
delete_from tmp; tmp.insert();
update_recordset tmp setting FontName = tmp.FontName + 'a';
while select tmp {info (tmp.FontName);}
//(select forupdate)
delete_from tmp; tmp.insert();
while select forupdate tmp{ tmp.FontName += 'a'; tmp.update(); }
while select tmp {info (tmp.FontName);}
//(select forupdate order)
delete_from tmp; tmp.insert();
while select forupdate tmp order recid{ tmp.FontName += 'a'; tmp.update(); }
while select tmp {info (tmp.FontName);}
Что выведет джоб? Вот что:
Цитата:
Сообщение (16:16:38)
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
a
А с TempDb такой ерунды нет. Обновление выполняется лишь один раз.