2

У меня есть таблица A-Z. В таблице A есть PK идентификатора, а во всех других таблицах есть поля, относящиеся к идентификатору TableA.Ошибка при обновлении codeunit при изменении длины PK таблицы

Мне поручено выполнить очистку кода, и мне нужно изменить идентификатор таблицыA от 30 до 20. Я сделал для другой таблицы B-Z вместе с модулем обновления. Но когда я пытаюсь изменить для TableA, я получаю эту ошибку:

«Это изменения, связанные с следующим первичным ключом, который может привести к потере данных в новой таблице. Изменения не могут быть обработаны, потому что TableUpgradeMode типа TableSyncSetup функция для измененной таблицы установлена ​​в Копировать, которая не копирует данные в новую таблицу. Чтобы устранить эту проблему, вы должны изменить параметр TableUpgradeMode для перемещения, а затем добавить код C/AL в функцию типа обновления для обработки новых данных таблицы «.

Что означает ошибка? Нужно ли мне менять код кода обновления TableA из TableSyncSetup.Mode :: Copy to :: Move? Любые указания?

Я использую Dynamics NAV 2016.

+0

Если он говорит так, может быть у вас есть запись в таблице А, которая имеет длину ID Greater чем 20? –

ответ

1

Да, вы должны изменить режим Move, но вы также должны создать новую таблицу, которая содержит данные временно с полей, где вы уменьшали поле длина. Вы также должны обрабатывать возможную проблему усечения данных из-за уменьшенной длины поля.

Но я бы сделал это по-другому (старый путь из набора инструментов Upgrade Toolkits): - Создайте новую таблицу с той же длиной поля (30), скопируйте содержимое поля и очистите поля (используя блок кода) - Измените длину поля и выберите «Принудительно», когда NAV спрашивает о режиме синхронизации (поскольку вы знаете, что в этих полях нет данных - SQL может отбрасывать и воссоздавать столбцы) - Использование второй копии кода для копирования данных в приведенных поля - обрабатывать усечение

Я надеюсь, что это помогает

 Смежные вопросы

  • Нет связанных вопросов^_^