Если вы хотите назовите ограничение NOT NULL в строке, вам нужно использовать ключевое слово ограничения, как и для любого другого типа ограничений.
create table Funkcje
(
nazwa_funkcji varchar(15) constraint funk_pk PRIMARY KEY,
min_myszy number(5) constraint funk_min_nn NOT NULL,
max_myszy number(5) constraint funk_max_nn NOT NULL,
constraint funk_ch check(min_myszy < max_myszy)
)
Это возвращает следующее в словаре данных
SQL> select constraint_name, constraint_type, search_condition_vc
2 from user_constraints
3 where table_name = 'FUNKCJE';
CONSTRAINT_NAME C SEARCH_CONDITION_VC
-------------------- - -----------------------
FUNK_MIN_NN C "MIN_MYSZY" IS NOT NULL
FUNK_MAX_NN C "MAX_MYSZY" IS NOT NULL
FUNK_CH C min_myszy < max_myszy
FUNK_PK P
Кроме того, хотя VARCHAR и varchar2 идентичны Oracle не гарантирует, что текущее поведение VARCHAR будет продолжаться (это было то же самое в течение очень долгого времени, хотя). Было бы более обычным использовать varchar2. The documentation says:
Не используйте тип данных VARCHAR. Вместо этого используйте тип данных VARCHAR2. Хотя тип данных VARCHAR в настоящее время является синонимом VARCHAR2, , тип данных VARCHAR планируется переопределить как отдельный тип данных , используемый для символьных строк переменной длины по сравнению с различной семантикой сравнения.