@H_301_2@
我正在创建一个具有多对多关系的sqlite数据库,我将其分解为两个一对多关系,并使用以下代码
sqliteManager: CREATE TABLE "main"."LESSONS" ( "LESSONID" INTEGER PRIMARY KEY NOT NULL,"MODULEID" INTEGER,FOREIGN KEY(MODULEID) REFERENCES MODULES (MODULEID),"STUDENTID" INTEGER,FOREIGN KEY (STUDENITD) REFERENCES STUDENTS (STUDENTID) )
错误:
[near ""STUDENTID"": Syntax error ] Exception Name: NS_ERROR_FAILURE Exception Message: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [mozIStorageConnection.createStatement]
解决方法
查看
documentation;它会告诉你,如果在字段定义本身上指定了外键,则不应使用关键字FOREIGN KEY本身.此外,您使用了过多的逗号,如CL所指出的那样,即使单独指定约束,外键名也不应该在括号中.
这句话做你想要的:
CREATE TABLE "LESSONS" ( "LESSONID" INTEGER PRIMARY KEY NOT NULL,"MODULEID" INTEGER REFERENCES MODULES(MODULEID),"STUDENTID" INTEGER REFERENCES STUDENTS(STUDENTID) );
另请注意,如果MODULEID是表MODULES的主键,那么您不必自己指定它; sqlite不需要它.话虽如此,我更喜欢像这样指定它,因为其他sql引擎确实期望它.
@H_301_2@