2014-04-06 72 views
1

我正在創建兩個表。第一個表創建時沒有錯誤,但是當我嘗試創建SUBHEAD表時,出現錯誤:第2行,缺少右括號。我不確定這條線有什麼問題。下面是我的SQL語句:創建表(Oracle)

CREATE TABLE HEAD 
    (Code NUMERIC(4,0) NOT NULL PRIMARY KEY, 
    HeadName VARCHAR(50) NOT NULL UNIQUE, 
    HType VARCHAR(1) NOT NULL, 
    HDate DATE NOT NULL, 
    OpBal DECIMAL(11,2) NOT NULL 
    ); 

CREATE TABLE SUBHEAD 
    (HCode NUMERIC(4,0) NOT NULL FOREIGN KEY REFERENCES HEAD(Code), 
    SubCode NUMERIC(4,0) NOT NULL, 
    SubName VARCHAR(50) NOT NULL, 
    SDate DATE NOT NULL, 
    OpBal DECIMAL (11,2) NOT NULL, 
    CONSTRAINT pk_subheadID PRIMARY KEY (HCode, SubCode) 
    ); 
+0

把外鍵聲明的約束子句。 –

+0

它是如何起作用的?我以爲你可以在兩個地方做到這一點。 – Stc5097

+1

理論上我不是很大,但我可以完成任務。 –

回答

2

語法:http://docs.oracle.com/cd/B28359_01/server.111/b28286/clauses002.htm#SQLRF52167
注意, 「在線」 約束語法是: 「山坳col_type參考TAB(COL)」,而不是 「主鍵」

數據類型號碼是NUMBER不是數字

所以我的記憶沒有騙我 - 你可以有多個在線的限制(雖然語法圖並沒有表現出來):

SQL> create table tt1(a number primary key); 

Table created. 

SQL> create table tt2(a number references tt1(a) not null); 

Table created. 
2
CREATE TABLE SUBHEAD 
    (HCode NUMERIC(4,0) NOT NULL, FOREIGN KEY (Hcode) REFERENCES HEAD(Code), 
    SubCode NUMERIC(4,0) NOT NULL, 
    SubName VARCHAR(50) NOT NULL, 
    SDate DATE NOT NULL, 
    OpBal DECIMAL (11,2) NOT NULL, 
    CONSTRAINT pk_subheadID PRIMARY KEY (HCode, SubCode) 
    ); 

(注意逗號,並參考新的表格列)