android SQLite外键错误
我一直在为以下错误咬牙切齿: 我定义了几个表,其中两个表必须共享一个值“task_id”。我在代码中使用以下create语句:android SQLite外键错误,android,sqlite,error-handling,foreign-keys,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 autoincre
// 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):准备“创建表rat(_idinteger主键自动递增,timeStamp DATETIME DEFAULT null,taskId integer NOT null,外键(taskId)引用任务(taskId)”时0x25afb0出现故障1(接近“会话”:语法错误),会话文本默认为空,ratA文本默认为空,ratB文本默认为空,ratC文本默认为空,应答文本默认为空,条件文本默认为空);'
我看了一遍,找不到任何能解决我具体问题的东西。在“create”语句中,在何处可以引用外键有限制吗?
感谢您在这个问题上提供的帮助。我认为声明的格式应如下所示:
col_name1 TEXT REFERENCES table_name ( col_name2 )
所以你可以试试:
KEY_RAT_TASKID + " REFERENCES " + TASKS_TABLE + "(" + KEY_TASKS_TASKID + ")"
我认为声明的格式应如下:
col_name1 TEXT REFERENCES table_name ( col_name2 )
所以你可以试试:
KEY_RAT_TASKID + " REFERENCES " + TASKS_TABLE + "(" + KEY_TASKS_TASKID + ")"
成功了。谢谢你的帮助,亚历克斯@foladev,如果它解决了问题,你应该:)就是这样。谢谢你的帮助,亚历克斯@foladev,如果它解决了问题,你应该:)