Как добавить ненулевое ограничение для столбца, содержащего нулевые значения - программирование
Подтвердить что ты не робот

Как добавить ненулевое ограничение для столбца, содержащего нулевые значения

У меня есть таблица со столбцом, который содержит несколько нулевых значений. Я хочу добавить ограничение NOT NULL в этот столбец, не обновляя существующие значения NULL до ненулевого значения. Я хочу сохранить существующие нулевые значения и проверить будущие строки, чтобы они содержали ненулевое значение для этого столбца. Это возможно? Как?

4b9b3361

Ответ 1

Вы можете добавить неопределенное ограничение - он не будет смотреть на существующие строки, но он будет проверяться для любых новых или обновленных строк.

ALTER TABLE mytable MODIFY mycolumn NOT NULL NOVALIDATE;

Просто имейте в виду, что вы не сможете обновить существующую строку, если она не удовлетворяет ограничениям.

Также обратите внимание на недостаток, что оптимизатор не сможет воспользоваться этим ограничением при составлении своих планов - он должен предположить, что некоторые строки могут по-прежнему иметь нулевое значение.

Ответ 2

ALTER TABLE имя_таблицы SET column_name = '0' WHERE column_name IS NULL;

ALTER TABLE имя_таблицы MODIFY COLUMN (имя_столбца NUMBER CONSTRAINT constraint_identifier NOT NULL);

Это, конечно, предполагает, что ваш столбец - это число, но это то же самое, вы просто измените значение "0" на значение по умолчанию, которое не является нулевым.