2011-07-25 155 views
5
CREATE TABLE Persons (
    P_Id int NOT NULL, 
    LastName varchar(255) NOT NULL, 
    FirstName varchar(255), 
    PRIMARY KEY (P_Id) 
) 

CREATE TABLE Orders (
    O_Id int NOT NULL PRIMARY KEY, 
    OrderNo int NOT NULL, 
    P_Id int FOREIGN KEY REFERENCES Persons(P_Id) 
) 

我得到一個錯誤在創建表的訂單:ORA-00907:缺少右括號

ORA-00907:缺少右括號

+0

離開這兩個詞'外國KEY'出來。要麼使用FOREIGN KEY作爲單獨的子句(用逗號分隔)並給出字段列表,要麼在現有字段的末尾使用REFERENCES。請參閱Oracle SQL參考。 – mihi

+0

有沒有一個在線工具來幫助清除這些類型的錯誤?我的代碼在SQL Developer中運行,它在放入Cognos 10 report studio時進行了驗證,但是當我嘗試生成SQL時,會出現此錯誤。我猜這不是由parens引起的,但是有沒有一種工具可以幫助解決這個問題? –

+0

也從IBM知識中心發現此問題 - ORA-00907也可能由使用左外連接和子句的查詢引起:https://www.ibm.com/support/knowledgecenter/SSMR4U_10.1.0/com.ibm。 swg.ba.cognos.tg_bitshoot.10.1.1.doc/c_theora-00907errorappearswhenrunningareport.html#Theora格式,00907ErrorAppearsWhenRunningaReport –

回答

11

如果要定義一個外鍵直列與列定義,那麼你不應該指定FOREIGN KEY。放棄它的定義。

試試這個:

CREATE TABLE Orders 
( 
    O_Id int NOT NULL PRIMARY KEY, 
    OrderNo int NOT NULL, 
    P_Id int REFERENCES Persons(P_Id) 
) 
+0

非常感謝你,但我所看到的例子, 的p_id INT FOREIGN KEY參考人數(P_ID) – Kiran

+0

你知道那些是針對Oracle數據庫的? – Chandu

+2

在搜索並被驅使瘋狂之後,我經常不得不定義新的命名約束來聲明外鍵,這完全是實際要求。 W3schools.com在他們當前的Oracle fk定義標準中是不正確的 –