поддержка внешнего ключа базы данных web sql - PullRequest
2 голосов
/ 11 июля 2011

Я проверяю это утверждение в 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?

Ответы [ 3 ]

9 голосов
/ 18 ноября 2011

с учетом того, что даже при правильном синтаксисе функция внешнего ключа не включена и не может быть в веб-базе данных.поскольку функция внешнего ключа по умолчанию отключена в sqlite3, вы должны вручную включить ее с помощью оператора "PRAGMA foreign_keys = ON".К сожалению, оператор PRAGMA отключен в веб-базе данных.удачи!

4 голосов
/ 11 июля 2011

(добавив мой комментарий в качестве ответа)

Как указал Нейл, вы закрываете скобку в неправильном положении.

Кроме того, синтаксис для внешнего ключа неправильный, должно работать следующее (при условии, что 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 голосов
/ 11 июля 2011

Вам нужно заменить ) на , после 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));

Обратите внимание на дополнительную скобку в конце оператора.

...