2013-02-18 56 views
1
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:缺少關鍵字爲什麼會出現關鍵字錯誤?

這裏順便說一句其他兩個表。

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

順便說一句:你做* *不想**使用'CHAR(n)'使用'VARCHAR(n)'而不是 – 2013-02-18 12:08:02

+1

我也很確定你不需要'decimal(3,2)'。由此可以存儲的最高價格是9.99 – 2013-02-18 12:12:50

回答

-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 
); 
+1

與原始SQL有什麼不同? – 2013-02-18 11:02:49

+0

這就是他試過的代碼:) – 2013-02-18 11:03:22

+0

與以前一樣的錯誤。 – user2082958 2013-02-18 11:07:12

5

甲骨文僅支持ON DELETE SET NULLON DELETE CASCADE作爲關鍵字。

的ON DELETE子句讓你決定如何甲骨文:從手動http://docs.oracle.com/cd/B28359_01/server.111/b28286/clauses002.htm#CJABCJJF

報價:中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 
); 

有關詳情請參閱手冊實現如果刪除引用的主鍵或唯一鍵值,數據庫會自動維護參照完整性。如果忽略該子句,則Oracle不會允許你刪除父表有子表

這裏依賴行引用的鍵值是SQLFiddle:http://sqlfiddle.com/#!4/07e93/1

+0

加上表名是錯的... – Ben 2013-02-18 11:11:51

+0

沒有完全理解你,我離開只是限制? – user2082958 2013-02-18 11:16:01

+0

如何建立那麼這 主鍵:C_NO + P_NO 外鍵:C_NO參考客戶表,限制上刪除 外鍵:P_NO參考產品表,限制上刪除 – user2082958 2013-02-18 11:28:43

相關問題