2

我正在 Safari 5.0.5 中测试此语句,但在 FOREIGN 之前出现错误:

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

3 回答 3

9

请记住,即使语法正确,外键功能也未启用,也无法在 Web 数据库中使用。因为在 sqlite3 中默认禁用外键功能,您必须通过语句“PRAGMA foreign_keys = ON”手动启用它。不幸的是,PRAGMA 语句在 web 数据库中被禁用。祝你好运!

于 2011-11-18T13:32:10.933 回答
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)
);
于 2011-07-11T08:11:59.847 回答
0

您需要),after替换,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));

请注意语句末尾的附加括号。

于 2011-07-11T07:47:57.493 回答