Это слишком долго для комментария. Я не думаю, что вам нужно ограничение NOT NULL
. Это приведет к тому, что ваши вставки не будут выполнены, если любые столбцы NOT NULL
будут NULL
.
Самое простое решение - не изменять данные вообще. В конце концов, NULL
кажется допустимым значением, если данные поступают именно так. Просто используйте COALESCE()
в своем logi c:
select coalesce(x, 0) + coalesce(y, 0)
Вы можете охватить это logi c в представлении или в сгенерированных столбцах:
alter table t add x_notnull generated always as (coalesce(x, 0));
Если вы хотите предотвратить поступление строк со значениями NULL
, вы можете отфильтровать их в процессе, важном для данных. Вы не предоставляете подробностей, поэтому я не могу вносить никаких предложений.
Вы можете добавить значение default
. Например:
alter table modify y default 0;
Затем последующие insert
s, где значение отсутствует , будут заменены значением по умолчанию. Однако явные значения NULL
не будут затронуты.
Наконец, вы можете добавить ограничение NOT NULL
- после удаления всех текущих значений NULL
.
Здесь - скрипт db <>, показывающий некоторые примеры вышеперечисленного.