加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 18:59:06 所属栏目:百科 来源:网络整理
导读:我正在创建一个具有多对多关系的SQLite数据库,我将其分解为两个一对多关系,并使用以下代码 SQLiteManager: CREATE TABLE "main"."LESSONS" ( "LESSONID" INTEGER PRIMARY KEY NOT NULL,"MODULEID" INTEGER,FOREIGN KEY(MODULEID) REFERENCES MODULES (MODULE
我正在创建一个具有多对多关系的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引擎确实期望它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读