2012-06-27 26 views
1

我已經磨以下錯誤我的牙齒:的Android SQLite的外鍵錯誤

我定義了幾桌,其中兩個必須共享一個值「TASK_ID」。我用我的代碼下面的創建語句(S):

// SQL Statement to create new Tasks table 
private static final String TASKS_TABLE_CREATE = "create table " + TASKS_TABLE 
    + (" (" + KEY_TASKS_TASKID + " integer primary key autoincrement, ") 
    + (KEY_TASKS_TASK + " TEXT, ") 
    + (KEY_TASKS_SESSION + " TEXT, ") 
    + (KEY_TASKS_CONDITION + " TEXT);"); 
// SQL Statement to create new RAT table 
private static final String RAT_TABLE_CREATE = "create table " + RAT_TABLE 
    + (" (" + KEY_ID + " integer primary key autoincrement, ") 
    + (KEY_RAT_TIMESTAMP + " DATETIME DEFAULT null, ") 
    + (KEY_RAT_TASKID + " INTEGER NOT NULL, ") 
    + ("FOREIGN KEY(" + KEY_RAT_TASKID + ") REFERENCES ") 
    + (TASKS_TABLE + "(" + KEY_TASKS_TASKID + "), ") 
    + (KEY_RAT_SESSION + " TEXT DEFAULT null, ") 
    + (KEY_RAT_RAT_A + " TEXT DEFAULT null, ") 
    + (KEY_RAT_RAT_B + " TEXT DEFAULT null, ") 
    + (KEY_RAT_RAT_C + " TEXT DEFAULT null, ") 
    + (KEY_RAT_ANSWER + " TEXT DEFAULT null, ") 
    + (KEY_RAT_CONDITION + " TEXT DEFAULT null);"); 

我正在一個SQL例外它說:

06-26 20:24:49.759:E /數據庫(17404):當準備'create table rat(_id integer primary key autoincrement,timeStamp DATETIME DEFAULT null,taskId INTEGER NOT NULL,FOREIGN KEY(taskId)REFERENCES tasks(taskId),session TEXT DEFAULT')時,0x25afb0上的失敗1(接近「session」:語法錯誤) null,ratA TEXT DEFAULT null,ratB TEXT DEFAULT null,ratC TEXT DEFAULT null,answer TEXT DEFAULT null,condition TEXT DEFAULT null);'。

我已經翻閱並找不到解決我的特定問題的任何內容。對'create'語句中可以引用外鍵的位置有限制嗎? 感謝您提供有關此問題的任何幫助。

回答

1

我認爲,聲明應採用以下格式:

col_name1 TEXT REFERENCES table_name (col_name2) 

所以,你可以嘗試:

KEY_RAT_TASKID + " REFERENCES " + TASKS_TABLE + "(" + KEY_TASKS_TASKID + ")" 
+0

這做到了。謝謝你的幫助Alex! – foladev

+0

@foladev,你應該[**接受答案**](http://i.stack.imgur.com/uqJeW.png)如果它解決了問題:) –

+0

抱歉-_- noob - > – foladev