小编典典

在SQLite中如何实现多对多关系

sql

我正在制作一个具有多对多关系的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]

有谁知道我该如何解决这个错误?


阅读 284

收藏
2021-03-23

共1个答案

小编典典

查看文档;
它向您表明,如果您在字段定义本身上指定了外键,则不应使用关键字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引擎确实希望如此。

2021-03-23