python - 尝试创建外键 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
解决方案
将外键的定义移到语句末尾:
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
推荐阅读
- flowable - 访问数组的 JSON 值(Flowable)
- javascript - 使用用户可以添加输入框的动态表单发送电子邮件
- php - php。当用户选择此选项时,显示所有 12 个月的日历
- python - AttributeError:“set”对象没有属性“popleft”
- php - 找不到类“Way\Generators\GeneratorsServiceProvider”
- javascript - 为什么顶部位置只改变一次
- html - Bootstrap 4 - 卡片背景图像调整大小问题
- node.js - Sequelize - 使用或运算符和模型关联进行查询
- google-cloud-platform - Google Datastore - 字符串的索引顺序是什么?
- angular - 按 2 个标准对数组中的项目进行角度过滤