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 ではデフォルトで無効になっているため、「PRAGMAforeign_keys = ON」ステートメントを介して手動で有効にする必要があります。残念ながら、Web データベースでは PRAGMA ステートメントが無効になっています。幸運を!

于 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 に答える