首页 > 解决方案 > 尝试创建外键 sqlit3 p 时出现语法错误

问题描述

我正在尝试创建一个外键来显示学生已经设置了哪些作业。我已经完成了我认为正确的语法,但是我不断收到数据库其他部分的语法错误。我不确定这是否是因为外键,否则它没有发生。

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

标签: pythonsqlite

解决方案


将外键的定义移到语句末尾:

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


推荐阅读