У меня есть таблица со столбцом, который содержит несколько нулевых значений. Я хочу добавить ограничение NOT NULL
в этот столбец, не обновляя существующие значения NULL до ненулевого значения. Я хочу сохранить существующие нулевые значения и проверить будущие строки, чтобы они содержали ненулевое значение для этого столбца. Это возможно? Как?
Как добавить ненулевое ограничение для столбца, содержащего нулевые значения
Ответ 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" на значение по умолчанию, которое не является нулевым.