gdmn
gdmn copied to clipboard
Сделать правильно добавление NOT NULL полей
В ситуации, когда мы:
- Создаем новую entity
- Изменяем entity, в которой нет еще записей
Можно создавать NOT NULL поля не указывая DEFAULT значений.
Проверку на существование новых записей можно выполнить отдельным запросом (EntityQuery) при открытии формы. Соответственно, пока ответ не придет с сервера, редактировать поля нельзя.
Если мы изменяем entity в которой есть записи, то при добавлении NOT NULL поля должно появляться или становиться активным поле INITIAL VALUE
(начальное значение). Это поле никак не влияет на поле DEFAULT VALUE
.
Начальное значение -- INITIAL VALUE -- будет присвоено всем существующим записям. Так как FB3 не позволяет создавать NOT NULL поля на таблицах с существующими записями, если для таких полей не установлено DEFAULT значение, то создание таких полей должно происходить следующим образом:
- У поля задано DEFAULT значение и оно равно INITIAL VALUE. Просто создаем поле с указанным DEFAULT значением.
- У поля не задано DEFAULT значение. а) Создаем поле с DEFAULT = INITIAL VALUE. б) комитим транзакцию. в) удаляем из поля DEFAULT значение.
- У поля задано DEFAULT значение, но оно не равно INITIAL VALUE. а) Создаем поле с DEFAULT = INITIAL VALUE. б) комитим транзакцию. в) меняем DEFAULT значение.