Ни одна из ваших двух гипотез.
Oracle принимает NULL
в спецификации столбца как явное отсутствие ограничения NOT NULL . Это (вводящий в заблуждение) запрет на использование в операторе CREATE TABLE
, но не обязательно в операторе ALTER TABLE
, где он может отменить ранее существующее ограничение.
CREATE TABLE t(col1 TYPE NOT NULL);
ALTER TABLE t MODIFY col1 NULL; -- Now the `NOT NULL` constraint has been dropped
Поэтому, когда вы используете CREATE TABLE t(c INTEGER NULL)
, это не означает, что c
всегда должно быть нулевым, и не означает, что c
имеет значение по умолчанию NULL
. Это просто означает, что c
равен нулю в порядке .