ORA缺少右括号和未实现的功能

时间:2016-12-08 14:02:10

标签: sql oracle oracle11g

我正在尝试在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时,我是否需要在某处使用括号?

1 个答案:

答案 0 :(得分:3)

Oracle不支持以下功能:

ON UPDATE CASCADE

ON DELETE SET DEFAULT

据推测,如果您删除它们,您的脚本将运行正常。就个人而言,我从来不需要其中任何一个(因为我总是使用永远不会改变的代理主键)。

相关问题