关于Oracle中的sql:右括号错误ORA-00907

right parenthesis error ORA-00907 in Oracle

我已经创建了这两个表。 他们是员工超级类型的一部分。 尝试在oracle中创建这些表时出现错误

ORA-00907: missing right parenthesis

我不确定为什么会收到此错误。 谁能指出我的错误?

急救员表

1
2
3
4
5
6
7
8
DROP TABLE Firstaiders;
CREATE TABLE Firstaiders(
Staff_ID    NUMBER NOT NULL,

CONSTRAINT  pk_Firstaiders PRIMARY KEY (Staff_ID),

FOREIGN KEY(Staff_ID) REFERENCES Staff(Staff_ID) ON DELETE CASCADE ON   UPDATE CASCADE
);

安全表

1
2
3
4
5
6
7
8
9
10
11
 DROP TABLE Security;
CREATE TABLE Security(
Staff_ID    NUMBER NOT NULL,
Security_ID NUMBER,
CRB_CHECK   VARCHAR2(8),
fk1_Stage_ID    NUMBER NOT NULL,

CONSTRAINT  pk_Security PRIMARY KEY (Staff_ID),

FOREIGN KEY(Staff_ID) REFERENCES Staff(Staff_ID) ON DELETE CASCADE ON UPDATE CASCADE
);

删除Oracle不直接支持的ON UPDATE CASCADE

例如:

1
2
3
4
CREATE TABLE Firstaiders(
Staff_ID    NUMBER NOT NULL,
CONSTRAINT  pk_Firstaiders PRIMARY KEY (Staff_ID),
FOREIGN KEY(Staff_ID) REFERENCES Staff(Staff_ID) ON DELETE CASCADE);

Oracle在ON DELETE CASCADE之后期望右括号,但是发现导致ORA-00907ON UPDATE CASCADE