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