gdmn icon indicating copy to clipboard operation
gdmn copied to clipboard

Сделать правильно добавление NOT NULL полей

Open gsbelarus opened this issue 4 years ago • 0 comments

В ситуации, когда мы:

  1. Создаем новую entity
  2. Изменяем entity, в которой нет еще записей

Можно создавать NOT NULL поля не указывая DEFAULT значений.

Проверку на существование новых записей можно выполнить отдельным запросом (EntityQuery) при открытии формы. Соответственно, пока ответ не придет с сервера, редактировать поля нельзя.

Если мы изменяем entity в которой есть записи, то при добавлении NOT NULL поля должно появляться или становиться активным поле INITIAL VALUE (начальное значение). Это поле никак не влияет на поле DEFAULT VALUE.

Начальное значение -- INITIAL VALUE -- будет присвоено всем существующим записям. Так как FB3 не позволяет создавать NOT NULL поля на таблицах с существующими записями, если для таких полей не установлено DEFAULT значение, то создание таких полей должно происходить следующим образом:

  1. У поля задано DEFAULT значение и оно равно INITIAL VALUE. Просто создаем поле с указанным DEFAULT значением.
  2. У поля не задано DEFAULT значение. а) Создаем поле с DEFAULT = INITIAL VALUE. б) комитим транзакцию. в) удаляем из поля DEFAULT значение.
  3. У поля задано DEFAULT значение, но оно не равно INITIAL VALUE. а) Создаем поле с DEFAULT = INITIAL VALUE. б) комитим транзакцию. в) меняем DEFAULT значение.

gsbelarus avatar Feb 27 '20 11:02 gsbelarus