1

我一直在为以下错误磨牙:

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

// 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): 0x25afb0 上的失败 1(接近“会话”:语法错误)在准备“创建表大鼠(_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);'。

我已经浏览过了,找不到任何可以解决我的具体问题的东西。在“创建”语句中可以引用外键的位置是否有限制?感谢您在此问题上提供的任何帮助。

4

1 回答 1

1

我认为该声明的格式应如下:

col_name1 TEXT REFERENCES table_name ( col_name2 )

所以你可以尝试:

KEY_RAT_TASKID + " REFERENCES " + TASKS_TABLE + "(" + KEY_TASKS_TASKID + ")"
于 2012-06-27T01:56:40.760 回答