Почему по умолчанию не используется, когда я установил ненулевое ограничение? - PullRequest
0 голосов
/ 24 октября 2018

У меня есть таблица в базе данных postgresql.

Для данного столбца я устанавливаю значение по умолчанию, затем я хочу, чтобы оно было NOT NULL:

ALTER TABLE "order" ALTER COLUMN last_bill_date SET DEFAULT '-Infinity';
ALTER TABLE "order" ALTER COLUMN last_bill_date SET NOT NULL;

Но второе утверждение не выполняется:

ERROR:  column "last_bill_date" contains null values

Почему значение DEFAULT не используется, если для этого столбца применяется NOT NULL?

1 Ответ

0 голосов
/ 24 октября 2018

За документацию:

ПО УМОЛЧАНИЮ default_expr

(...)

Выражение по умолчанию будет использоваться в любой операции вставки, в которой не указано значение для столбца.Если для столбца нет значения по умолчанию, то по умолчанию используется значение NULL.

Измененное выражение по умолчанию не может изменять строки, уже существующие в таблице, это следует сделать перед установкой ограничения «Не ноль»:

update "order"
set last_bill_date = '-Infinity'
where last_bill_date is null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...