我不知道是什么原因导致这个问题。有谁能帮我查一下吗?Oracle live也没有指定是哪一行导致了问题。
create table EMP (
EMPNO number(4),
ENAME varchar2(10),
EJOB varchar2(9) constraint def_job default 'CLRK',
MGR_ID number(4) constraint supervisor references EMPNO,
BIRTH_DATE date,
SAL number(7,2) constraint salCheck check(SAL > 20000) constraint defSal default 20001,
COMM number(7,2) constraint defComm default 1000,
DEPTNO varchar2(3) constraint deptFk references DPT(DNO),
PRJ_ID varchar2(9) constraint defa_prjID default 'P1',
DATE_OF_JOIN date,
constraint pri_ky primary key(EMPNO)
);
错误:ORA-02253:这里不允许约束规范
默认值不是约束,所以例如
constraint def_job default 'CLRK'
应该是
default 'CLRK'
此外,约束需要引用一个表和一个可选的唯一列,所以
constraint supervisor references EMPNO
应该
constraint supervisor references emp(empno)
不为外键指定数据类型,允许它们从父列继承,这是一个很好的实践,或者至少是一个好主意。
在创建了dept
表之后:
create table dpt (dno integer primary key);
create table emp (
empno number(4) constraint pri_ky primary key,
ename varchar2(10),
ejob varchar2(9) default 'CLRK',
mgr_id constraint supervisor references emp(empno),
birth_date date,
sal number(7,2) default 20001 constraint salcheck check(sal > 20000),
comm number(7,2) default 1000,
deptno constraint deptfk references dpt(dno),
prj_id varchar2(9) default 'P1',
date_of_join date
);