|
IDENTITY
|
|||
---|---|---|---|
#18+
Занялся переводом генерации поля первичного ключа ID у таблиц с SEQUENCE на "GENERATED BY DEFAULT AS IDENTITY" и споткнулся. В релизнотах написано, что нельзя преобразовать обычное поле в IDENTITY и обратно. Значит, надо добавлять новое поле, настраивать его и удалять старое. Добавляю новое поле в таблицу: Код: sql 1. 2.
При коммите ошибка: Код: plaintext 1. 2.
Нельзя добавить поле, т.к. его значение будет пустое. Дефолтное значение команда не принимает. Выход вижу только один: выгружать данные в скрипт, очищать таблицу, добавлять поле и вставлять обратно. Но это придется делать для каждой такой таблицы каждой базы данных, что вообще не радует. Вопросы: есть ли другой путь без лишних телодвижений добавить и настроить IDENTITY-поле? И если нет, будут ли разработчики менять такое поведение или их все устраивает? Вообще, если честно, мне непонятно, зачем надо было IDENTITY объявлять как NOT NULL. Для ПК - да, это необходимо явно указать, но не факт же, что IDENTITY-поле является ПК. Какая разница внутреннему триггеру, можно NULL'ы совать в поле или нет - все равно генератор дергается. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 10:33 |
|
IDENTITY
|
|||
---|---|---|---|
#18+
CyberMax, в 4.0 столбец идентификации можно преобразовать в обычный, но не наоборот. Плюс добавили разные способы генерации значений столбцов идентификации BY DEFAULT или ALWAYS. В остальном по части DDL ничего не поменялось. Поведение вряд ли будут менять ибо оно логично. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 11:23 |
|
IDENTITY
|
|||
---|---|---|---|
#18+
CyberMax, кстати возможно ALWAYS сам заполнит поле значениями, но я не уверен (не пробовал). ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 11:27 |
|
IDENTITY
|
|||
---|---|---|---|
#18+
CyberMax, ИХМО, надо попросить в трекере чтобы при добавлении IDENTITY полей в таблицу с данными значение заполнялось автоматически. То что оно не может быть NULL описано в стандарте и этого точно не изменишь. В 3.0 вряд ли сделают, а на 4.0 если будешь убедительным могут. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 11:38 |
|
IDENTITY
|
|||
---|---|---|---|
#18+
CyberMaxЗанялся переводом генерации поля первичного ключа ID у таблиц с SEQUENCE на "GENERATED BY DEFAULT AS IDENTITY"Я может глупость спрошу, но в чем смысл? Работа ради работы? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 12:37 |
|
IDENTITY
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyCyberMaxЗанялся переводом генерации поля первичного ключа ID у таблиц с SEQUENCE на "GENERATED BY DEFAULT AS IDENTITY"Я может глупость спрошу, но в чем смысл? Работа ради работы? Чтобы назад нельзя было вернуться. Я иногда так делаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 14:13 |
|
IDENTITY
|
|||
---|---|---|---|
#18+
Симонов Дениснадо попросить в трекере чтобы при добавлении IDENTITY полей в таблицу с данными значение заполнялось автоматически Где-то вообще позволительно добавлять серийники в не пустую таблицу? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 16:38 |
|
IDENTITY
|
|||
---|---|---|---|
#18+
wadman, да чёрт его знает. Никогда не пробовал. Обычно я принимаю решение о том какой будет ПК ещё на этапе создания таблицы и не переделываю его потом. ИХМО, рефакторинг здесь не к чему. Одно дело использовать в новых таблицах, другое — зачем-то старые ломать. А вообще IDENTITY в ряде случаев удобен, например когда значение ПК не нужно перед вставкой, в какой-нибудь таблице логе, которая пользователем не заполняется напрямую. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2018, 17:00 |
|
IDENTITY
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyЯ может глупость спрошу, но в чем смысл? Работа ради работы? Работа ради а) использования более удобной формы работы с последовательностями, б) чтобы не было зоопарка в метаданных. Естественно, этот процесс не на один присест, а на неопределенное время. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2018, 04:07 |
|
|
start [/forum/topic.php?fid=40&msg=39710765&tid=1560967]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 130ms |
0 / 0 |