create table Funkcje
(
nazwa_funkcji varchar(15) constraint funk_pk PRIMARY KEY,
min_myszy number(5) funk_min_nn NOT NULL,
max_myszy number(5) funk_max_nn NOT NULL,
constraint funk_ch check(min_myszy < max_myszy)
)
创建表格订单时出错:
ORA-00907 - “缺少右括号”
答案 0 :(得分:3)
如果要在行中命名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数据类型计划重新定义为单独的数据 用于可变长度字符串的类型与 不同的比较语义。