Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQLite中如何实现多对多关系_Sql_Sqlite - Fatal编程技术网

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

在SQLite中如何实现多对多关系,sql,sqlite,Sql,Sqlite,我正在创建一个具有多对多关系的SQLite数据库,我用以下代码将其分解为两个一对多关系 SQLiteManager: CREATE TABLE "main"."LESSONS" ( "LESSONID" INTEGER PRIMARY KEY NOT NULL , "MODULEID" INTEGER, FOREIGN KEY(MODULEID) REFERENCES MODULES (MODULEID), "STUDENTID" INTEGER, FOREIGN K

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

有人知道我如何修复此错误吗?

您在声明
外键时有一个打字错误

FOREIGN KEY (STUDENITD)
应该是

FOREIGN KEY (STUDENTID)
逗号太多了。 列属性不以逗号分隔;仅在表列之间使用它们:

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)
)
看看这个网站;它将告诉您,如果在字段定义本身上指定外键,则不应使用关键字
外键
本身。此外,正如CL.所指出的,您使用了太多的逗号,即使单独指定约束,外键名称也不应放在括号中

此语句符合您的要求:

CREATE TABLE "LESSONS"
(
    "LESSONID"  INTEGER PRIMARY KEY NOT NULL,
    "MODULEID"  INTEGER REFERENCES MODULES(MODULEID),
    "STUDENTID" INTEGER REFERENCES STUDENTS(STUDENTID)
);

还要注意的是,如果MODULEID是表模块的主键,那么就不必指定它本身;SQLite不需要它。话虽如此,我还是喜欢这样指定它,因为其他SQL引擎都希望这样。

谢谢您通知我输入错误。对此很抱歉,但更改后,它仍然不起作用:/此项仍然不正确:外键名称不应在括号中。此外,您将外键命名为字段名,这不是一种好的做法……最后,在内联定义外键时,必须省略
外键约束名称
部分,只需指定
引用表(字段)