2011-07-11 35 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数据库中被禁用。 祝你好运!