![]() |
#1 |
Участник
|
У меня есть такая задача - переименовать поле Entry No. (первичный ключ) в 32 таблице.
Записей в таблице примерно 500 000 . На обработку одной записи уходит около 2 сек. Вообщем времени много придётся тратить. может есть какая то возможность оптимизировать работу с Rename ? (для более быстрой перенумерации) |
|
![]() |
#2 |
Administrator
|
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 ))) изврат какой-то |
|
![]() |
#3 |
Участник
|
Цитата:
2. При Rename значение Entry No меняется во всех связанных таблицах. При вышей схеме произойдёт тоже что самое ? |
|
![]() |
#4 |
Участник
|
Цитата:
UpdateValueEntry(OldILE."Entry No.", NewEntryNo);
UpdateReservationEntry(OldILE."Entry No.", NewEntryNo); UpdateItemApplication(OldILE."Entry No.", NewEntryNo); ... |
|
![]() |
#5 |
Участник
|
Цитата:
В них необходимо описать всю логику, связанную с изменением номера операции в связанных таблицах - Стоимость Операция, Резервирование, Применение товарных операций, Измерения и т.д. |
|
![]() |
#6 |
Участник
|
В том то и дело что я не знаю на сто процентов все связанные таблицы (я имеюю ввиду таблицы которые система обновляет при Rename).
Еслибы я знал все эти таблицы, то я бы даже через SQL написал бы запросы, которые еще быстрее сделали обновления. |
|
![]() |
#7 |
Участник
|
Цитата:
Сообщение от art
![]() У меня есть такая задача - переименовать поле Entry No. (первичный ключ) в 32 таблице.
Записей в таблице примерно 500 000 . На обработку одной записи уходит около 2 сек. Вообщем времени много придётся тратить. может есть какая то возможность оптимизировать работу с Rename ? (для более быстрой перенумерации) |
|
![]() |
#8 |
Участник
|
у меня ключ на магазинах начинается везде с 1 и т.д.
на каждом будет теперь уникальный. поэтому к существующему значению нужно добавить парочку милионов. например, был 1 стал 10 000 001 |
|
![]() |
#9 |
Участник
|
Наверное уже решили проблему
![]() но я бы отключил все ключи в 32 и связанных таблицах ![]() ![]() Потом можно и ключи включить ![]()
__________________
Должен остаться только один. |
|
![]() |
#10 |
Участник
|
Цитата:
С rename - придеться отдельно отработать табличку Ledger Entry Dimension. На native базе rename пройдет гораздо быстрее, если используется sql версия - имеет смысл сделать бэкап, восстановить как native и обработать. Да и про табличку Value Entry тоже не забудьте. |
|