我正在尝试创建外键,以显示学生已设置的作业。我已经完成了我认为正确的语法,但是我不断收到数据库其他部分的语法错误。我不确定这是否是由于外键造成的,否则就不会发生。
c.execute("""CREATE TABLE IF NOT EXISTS HomeworkInfo (
HWID INTEGER PRIMARY KEY AUTOINCREMENT,
HomeworkName text);""")
c.execute("""CREATE TABLE IF NOT EXISTS HomeworkSet (
HWID text,
FOREIGN KEY (HWID) REFERENCES HomeworkInfo(HWID),
FName text,
SName text,
Results text);""")
line 36, in <module>
Results text);""")
OperationalError: near "FName": syntax error
答案 0 :(得分:0)
在语句末尾移动外键的定义:
CREATE TABLE IF NOT EXISTS HomeworkSet (
HWID text,
FName text,
SName text,
Results text,
FOREIGN KEY (HWID) REFERENCES HomeworkInfo(HWID)
);
或这样定义它:
CREATE TABLE IF NOT EXISTS HomeworkSet (
HWID text REFERENCES HomeworkInfo(HWID),
FName text,
SName text,
Results text
);
您可以在这里找到有关外键定义的更多信息:SQLite Foreign Key Support
答案 1 :(得分:0)
只是一个猜测,但在您的示例中,HomeworkInfo.HWID
似乎是integer
,而HomeworkSet.HWID
是text
。它们应该不是同一类型吗?