android SQLite外键错误

时间:2012-06-27 01:46:20

标签: android sqlite error-handling foreign-keys

我一直在研究下面的错误:

我定义了几个表,其中两个表必须共享一个值“task_id”。我在我的代码中使用以下create语句:

// 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 / Database(17404):当准备'create table rat(_id整数主键自动增量,timeStamp DATETIME DEFAULT null taskId INTEGER NOT NULL,FOREIGN KEY(taskId)REFERENCES tasks(taskId),session TEXT DEFAULT null,ratA TEXT DEFAULT null,ratB TEXT DEFAULT null,ratC TEXT DEFAULT null,answer TEXT DEFAULT null,condition TEXT DEFAULT null);'。< / p>

我已经浏览过,无法找到解决我特定问题的任何内容。是否有一个限制在'create'语句中可以引用外键的位置? 感谢您对此问题的任何帮助。

1 个答案:

答案 0 :(得分:1)

我认为该陈述的格式应如下:

col_name1 TEXT REFERENCES table_name ( col_name2 )

所以你可以试试:

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