0 sql constraints foreign-keys oracle11g ora-00905
CREATE TABLE SORDER (
C_NO CHAR(4),
P_NO CHAR(4),
QUANTITY SMALLINT,
PRIMARY KEY (C_NO, P_NO),
CONSTRAINT CNO_FK FOREIGN KEY (C_NO) REFERENCES CUSTOMER ON DELETE RESTRICT,
CONSTRAINT PNO_FK FOREIGN KEY (P_NO) REFERENCES PRODUCT2 ON DELETE RESTRICT
);
Run Code Online (Sandbox Code Playgroud)
ORA-00905:缺少关键字
这是另外两个表btw.
CREATE TABLE PRODUCT2 (
P_NO CHAR(4) PRIMARY KEY,
P_NAME CHAR(6),
PRICES DECIMAL(3,2),
STOCK SMALLINT
);
CREATE TABLE CUSTOMER2 (
C_NO CHAR(4) PRIMARY KEY,
C_NAME CHAR(6),
CITY CHAR(11)
);
Run Code Online (Sandbox Code Playgroud)
Oracle仅支持ON DELETE SET NULL或ON DELETE CASCADE作为关键字.功能ON DELETE RESTRICT是通过省略ON DELETE
CREATE TABLE SORDER (
C_NO CHAR(4),
P_NO CHAR(4),
QUANTITY SMALLINT,
PRIMARY KEY (C_NO, P_NO),
CONSTRAINT CNO_FK FOREIGN KEY (C_NO) REFERENCES CUSTOMER2,
CONSTRAINT PNO_FK FOREIGN KEY (P_NO) REFERENCES PRODUCT2
);
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅手册:http://docs.oracle.com/cd/B28359_01/server.111/b28286/clauses002.htm#CJABCJJF
从手册中引用:
ON DELETE子句使您可以确定在删除引用的主键或唯一键值时Oracle数据库如何自动维护引用完整性.如果省略此子句,则Oracle不允许您删除父表中具有子表中的从属行的引用键值
这是一个SQLFiddle:http://sqlfiddle.com/#!4/07e93/1