我正在创建一个具有多对多关系的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]
有谁知道如何修复此错误?
答案 0 :(得分:8)
查看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引擎确实期望它。
答案 1 :(得分:2)
你的逗号太多了。 列属性不以逗号分隔;仅在表格列之间使用它们:
CREATE TABLE "LESSONS"
(
"LESSONID" INTEGER PRIMARY KEY NOT NULL,
"MODULEID" INTEGER FOREIGN KEY (MODULEID) REFERENCES MODULES(MODULEID),
"STUDENTID" INTEGER FOREIGN KEY (STUDENTID) REFERENCES STUDENTS(STUDENTID)
)
答案 2 :(得分:1)
您在声明foreign key
FOREIGN KEY (STUDENITD)
应该是
FOREIGN KEY (STUDENTID)