AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.10.2008, 10:45   #1  
art06 is offline
art06
Участник
Аватар для art06
 
192 / 10 (1) +
Регистрация: 11.08.2006
У меня есть такая задача - переименовать поле Entry No. (первичный ключ) в 32 таблице.
Записей в таблице примерно 500 000 .
На обработку одной записи уходит около 2 сек.
Вообщем времени много придётся тратить.
может есть какая то возможность оптимизировать работу с Rename ? (для более быстрой перенумерации)
Старый 31.10.2008, 11:10   #2  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
CLEAR(NewILE)
NewILE.COPY(OldILE); (NewILE := OldILE или NewILE.TRANSFERFIELD(OldILE)к чему больше душа лежит)
NewILE."Entry No" := NewEntryNo;

UpdateValueEntry(OldILE."Entry No.", NewEntryNo);
UpdateReservationEntry(OldILE."Entry No.", NewEntryNo);
UpdateItemApplication(OldILE."Entry No.", NewEntryNo);
...

NewILE.INSERT;
OldILE.DELETE;



где NewILE и OldILE - реки 32
)))
изврат какой-то
Старый 31.10.2008, 11:26   #3  
art06 is offline
art06
Участник
Аватар для art06
 
192 / 10 (1) +
Регистрация: 11.08.2006
Цитата:
Сообщение от Sancho Посмотреть сообщение
UpdateValueEntry(OldILE."Entry No.", NewEntryNo);
UpdateReservationEntry(OldILE."Entry No.", NewEntryNo);
UpdateItemApplication(OldILE."Entry No.", NewEntryNo);
...
1. Не смог найти данные Update.
2. При Rename значение Entry No меняется во всех связанных таблицах. При вышей схеме произойдёт тоже что самое ?
Старый 31.10.2008, 11:29   #4  
prefreitor is offline
prefreitor
Участник
 
214 / 11 (1) +
Регистрация: 03.10.2006
Цитата:
UpdateValueEntry(OldILE."Entry No.", NewEntryNo);
UpdateReservationEntry(OldILE."Entry No.", NewEntryNo);
UpdateItemApplication(OldILE."Entry No.", NewEntryNo);
...
Еще измерения не забудьте поправить обязательно...
Старый 31.10.2008, 12:33   #5  
.Quattro. is offline
.Quattro.
Участник
Лучший по профессии 2009
 
194 / 22 (1) +++
Регистрация: 22.05.2006
Цитата:
Сообщение от art Посмотреть сообщение
1. Не смог найти данные Update.
2. При Rename значение Entry No меняется во всех связанных таблицах. При вышей схеме произойдёт тоже что самое ?
Это функции, которые Вам необходимо написать.
В них необходимо описать всю логику, связанную с изменением номера операции в связанных таблицах - Стоимость Операция, Резервирование, Применение товарных операций, Измерения и т.д.
Старый 31.10.2008, 13:05   #6  
art06 is offline
art06
Участник
Аватар для art06
 
192 / 10 (1) +
Регистрация: 11.08.2006
В том то и дело что я не знаю на сто процентов все связанные таблицы (я имеюю ввиду таблицы которые система обновляет при Rename).
Еслибы я знал все эти таблицы, то я бы даже через SQL написал бы запросы, которые еще быстрее сделали обновления.
Старый 31.10.2008, 13:42   #7  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Цитата:
Сообщение от art Посмотреть сообщение
У меня есть такая задача - переименовать поле Entry No. (первичный ключ) в 32 таблице.
Записей в таблице примерно 500 000 .
На обработку одной записи уходит около 2 сек.
Вообщем времени много придётся тратить.
может есть какая то возможность оптимизировать работу с Rename ? (для более быстрой перенумерации)
а можно поинтересоваться на какой ключ и зачем? "Entry No." самы быстрый ключ, если его сменить, то могут начаться тормоза, так как таблица большая
Старый 31.10.2008, 13:45   #8  
art06 is offline
art06
Участник
Аватар для art06
 
192 / 10 (1) +
Регистрация: 11.08.2006
у меня ключ на магазинах начинается везде с 1 и т.д.
на каждом будет теперь уникальный. поэтому к существующему значению нужно добавить парочку милионов. например, был 1 стал 10 000 001
Старый 01.12.2008, 22:49   #9  
NeNavision_imported is offline
NeNavision_imported
Участник
Аватар для NeNavision_imported
 
241 / 10 (1) +
Регистрация: 12.08.2005
Наверное уже решили проблему
но я бы отключил все ключи в 32 и связанных таблицах думаю за час все бы переименовалось, а скорее всего быстрее
Потом можно и ключи включить
__________________
Должен остаться только один.
Старый 02.12.2008, 12:02   #10  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Цитата:
Сообщение от art Посмотреть сообщение
у меня ключ на магазинах начинается везде с 1 и т.д.
на каждом будет теперь уникальный. поэтому к существующему значению нужно добавить парочку милионов. например, был 1 стал 10 000 001
Без rename есть шанс упустить строки документов/журналов (поля вроде Applies-to Entry No., Item Shpt. Entry No.")
С rename - придеться отдельно отработать табличку Ledger Entry Dimension.
На native базе rename пройдет гораздо быстрее, если используется sql версия - имеет смысл сделать бэкап,
восстановить как native и обработать.

Да и про табличку Value Entry тоже не забудьте.
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:03.