Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
gsbelarus opened this issue Feb 27, 2020 · 0 comments
Assignees
Labels
gdmn-front Related to gdmn-front package

Comments

@gsbelarus
Copy link
Owner

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

  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 gsbelarus added the gdmn-front Related to gdmn-front package label Feb 27, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
gdmn-front Related to gdmn-front package
Projects
None yet
Development

No branches or pull requests

2 participants