0
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
);

ORA-00905: キーワードがありません

これが他の2つのテーブルです。

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)
);
4

2 に答える 2

5

Oracle はON DELETE SET NULLorのみをON DELETE CASCADEキーワードとしてサポートします。の機能はON DELETE RESTRICTON 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
);

詳細については、マニュアルを参照してください: http://docs.oracle.com/cd/B28359_01/server.111/b28286/clauses002.htm#CJABCJJF

マニュアルからの引用:

ON DELETE 句を使用すると、参照された主キーまたは一意のキー値を削除した場合に、Oracle Databaseが参照整合性を自動的に維持する方法を決定できます。この句を省略した場合、子表に依存行がある親表で参照されたキー値を削除することはできません。

ここに SQLFiddle があります: http://sqlfiddle.com/#!4/07e93/1

于 2013-02-18T11:02:13.483 に答える
-6

以下のコードを試してください

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
);
于 2013-02-18T11:00:21.827 に答える