Sitelet https://github.com/pgcodekeeper/pgcodekeeper/issues/12
Skip to content

Добавление новой колонки NOT NULL #12

Description

@sgrinko

добавил в таблицу новую колонку:
job_number smallint DEFAULT 0 NOT NULL
сгенерировался код:
ALTER TABLE checksync_tables
ADD COLUMN job_number smallint;

ALTER TABLE ONLY checksync_tables
ALTER COLUMN job_number SET DEFAULT 0;

ALTER TABLE ONLY checksync_tables
ALTER COLUMN job_number SET NOT NULL;
—
к сожалению этот код просто так выполнить невозможно.
1-я строка добавит NULL поле
2-я строка объявит что для insert/update надо заполнить поле значением null
3-я строка попытается сделать поле NOT NULL но конечно у неё это не получится, так как в таблице все строки на данный момент есть NULL

для данной операции ожидалась команда
ALTER TABLE checksync_tables
ADD COLUMN job_number smallint NOT NULL DEFAULT 0;
—
ваш вариант генерации кода я использую в своих PRE скриптах, когда нужно в цикле мелкими пакетами обработать большую таблицу. Но это ручная работа и такой скрипт пишется специально и вручную. В этом случаем между 2-й и 3-й строкой стоит код замены всех строк с NULL на DEFAULT значение.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions