2011-07-11 110 views
2

我在Safari 5.0.5測試這種說法,但我之前FOREIGN得到一個錯誤:網絡SQL數據庫外鍵支持

CREATE TABLE IF NOT EXISTS Idea (
    id INTEGER PRIMARY KEY, 
    title TEXT NOT NULL, 
    content TEXT NOT NULL, 
    created TIMESTAMP NOT NULL, 
    sketchID INTEGER, 
    categoryID INTEGER NOT NULL, 
    FOREIGN KEY (sketchID) REFERENCES (Sketch), 
    FOREIGN KEY (categoryID) REFERENCES (Category)); 

我收到以下錯誤信息:

SQLStatementError 1 [DATABASE] near "(": syntax error 

這個SQL語句中的錯誤在哪裏?

回答

4

(添加一個答案我的意見)作爲尼爾指出,你在錯誤的位置,關閉支架

此外,對於外鍵的語法錯誤,下面應該工作(提供的HTML5 SQL方言是符合標準)記住

CREATE TABLE IF NOT EXISTS Idea 
( 
    id INTEGER PRIMARY KEY,  
    title TEXT NOT NULL,  
    content TEXT NOT NULL,  
    created TIMESTAMP NOT NULL,  
    sketchID INTEGER,  
    categoryID INTEGER NOT NULL, 
    FOREIGN KEY (sketchID) REFERENCES Sketch (sketchId),  
    FOREIGN KEY (categoryID) REFERENCES Category (categoryId) 
); 
0

你需要用,categoryID INTEGER NOT NULL)後讓你的聲明將成爲取代)

CREATE TABLE IF NOT EXISTS Idea ( 
      id INTEGER PRIMARY KEY,  
      title TEXT NOT NULL,  
      content TEXT NOT NULL,  
      created TIMESTAMP NOT NULL,  
      sketchID INTEGER,  
      categoryID INTEGER NOT NULL, 
      FOREIGN KEY (sketchID) REFERENCES Sketch (sketchID),  
      FOREIGN KEY (categoryID) REFERENCES Category (categoryID)); 

注意額外的支架在聲明的結尾。

+1

它應該是'REFERENCES Category(categoryID)' - 至少在標準SQL中。 –

+0

我用你的建議編輯了我的問題,我又收到了一個錯誤。 – VansFannel

+0

@a_horse_with_no_name:你說得對,我改了'REFERENCES'從句,它起作用了!謝謝。現在我需要一個答案來檢查它作爲解決方案! – VansFannel

8

保持,即使有正確的語法,國外主要特點是不啓用和不能在網絡數據庫中。由於sqlite3默認禁用了外鍵功能,因此您必須通過語句「PRAGMA foreign_keys = ON」手動啓用它。不幸的是,PRAGMA語句在Web數據庫中被禁用。 祝你好運!