我不知道是什么導致了這個問題。有人可以幫我找出來嗎?此外,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:此處不允許約束規范
uj5u.com熱心網友回復:
默認值不是約束,例如
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
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/339565.html
