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


Answers

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

ALTER TABLE mytable MODIFY mycolumn NOT NULL NOVALIDATE;

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

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

Question

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




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

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

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