2013-08-04 2 views
0

Я пытаюсь создать таблицу, но продолжаю получать ту же ошибку снова и снова, и я искал ответ для ответа без каких-либо успехов.Android SQLite Создать таблицу Проблема

Запрос, который работает в OnCreate() является:

CREATE TABLE Posts 
(
    PostID TEXT PRIMARY KEY, 
    CourseID TEXT, 
    FOREIGN KEY (CourseID) REFERENCES Courses (CourseID) ON DELETE CASCADE, 
    PostStartDate INTEGER NOT NULL, 
    PostEndDate INTEGER NOT NULL, 
    TeacherID TEXT, 
    FOREIGN KEY (TeacherID) REFERENCES Teachers (TeacherID) ON DELETE CASCADE, 
    PostDescription TEXT, 
    PostHidden INTEGER DEFAULT(0) 
) 

Я получаю ошибку является:

08-04 14:24:24.018: I/com.re.placed.DBHandler(10656): android.database.sqlite.SQLiteException: near "PostStartDate": syntax error (code 1): , while compiling: CREATE TABLE Posts (... (removed the rest of the query) 

Я подозреваю, что ошибка может иметь что-то делать или с внешнего ключа или каскадом delete. Два refenced колонки созданы как:

CourseID TEXT PRIMARY KEY and TeacherID TEXT PRIMARY KEY 

И чтобы убедиться, что внешние ключи используются я написал OnOpen метод, как:

@Override 
public void onOpen(SQLiteDatabase db) { 
    db.execSQL("PRAGMA foreign_keys = ON;"); 
    super.onOpen(db); 
} 

Любая помощь или предложения приветствуются.

ответ

2

Попробуйте помещать ограничения внешнего ключа в конце инструкции CREATE, по крайней мере, он работает в sqlfiddle с sqlite.

CREATE TABLE Posts 
(
    PostID TEXT PRIMARY KEY, 
    CourseID TEXT, 
    PostStartDate INTEGER NOT NULL, 
    PostEndDate INTEGER NOT NULL, 
    TeacherID TEXT, 
    PostDescription TEXT, 
    PostHidden INTEGER DEFAULT(0), 
    FOREIGN KEY (TeacherID) REFERENCES Teachers (TeacherID) ON DELETE CASCADE, 
    FOREIGN KEY (CourseID) REFERENCES Courses (CourseID) ON DELETE CASCADE 
); 
+0

Это работает! Благодаря! : D – Flipbed

Смежные вопросы