我正在尝试在Oracle APEX上执行以下脚本:
CREATE TABLE employer (
ename VARCHAR2(30) NOT NULL,
essn CHAR(9),
bdate DATE,
dno INTEGER DEFAULT 1
CHECK (dno > 0 AND dno < 21),
superssn CHAR(9),
CONSTRAINT employer_pk
PRIMARY KEY (essn),
CONSTRAINT employer_fk
FOREIGN KEY (superssn) REFERENCES employer (essn)
ON DELETE SET NULL
ON UPDATE CASCADE
);
CREATE TABLE department (
dname VARCHAR2(10) NOT NULL,
dnumber INTEGER NOT NULL,
mgrssn CHAR(9) NOT NULL,
mgrstartdate CHAR(9) NOT NULL,
PRIMARY KEY (dnumber),
UNIQUE (dname),
FOREIGN KEY (mgrssn) REFERENCES employer (essn)
ON DELETE SET DEFAULT
ON UPDATE CASCADE
);
但是,它会产生2个错误。 ORA-00907:第一个表上缺少右括号,第二个表上缺少ORA-03001:未实现的功能。
当我尝试在没有ON DELETE
/ ON UPDATE
语句的情况下运行脚本时,它没有显示任何错误,并且表已成功创建。在我添加ON DELETE
/ ON UPDATE
时,我是否需要在某处使用括号?
答案 0 :(得分:3)
Oracle不支持以下功能:
ON UPDATE CASCADE
ON DELETE SET DEFAULT
据推测,如果您删除它们,您的脚本将运行正常。就个人而言,我从来不需要其中任何一个(因为我总是使用永远不会改变的代理主键)。