sqlite - 一张表中的两个外键 sqlite3
问题描述
我有 3 张桌子。
第三张表 shop_order 的问题(也许不是)
当我启动 python 脚本创建表时出现错误: sqlite3.OperationalError: near "cart_id": syntax error
我尝试删除字段 cart_id 或 customer_id 它有效。但是有两个外键它不起作用
CREATE TABLE account
(
id integer primary key
);
CREATE TABLE shop_cart
(
id integer primary key,
FOREIGN KEY (owner_id) REFERENCES account (id)
);
CREATE TABLE shop_order
(
id integer primary key,
customer_id integer,
FOREIGN KEY (customer_id) REFERENCES account (id),
cart_id integer,
FOREIGN KEY (cart_id) REFERENCES shop_cart (id)
);
解决方案
外键位于列定义之后:
CREATE TABLE shop_order
(
id integer primary key,
customer_id integer,
cart_id integer,
FOREIGN KEY (customer_id) REFERENCES account (id),
FOREIGN KEY (cart_id) REFERENCES shop_cart (id)
);
但是,您应该重新考虑您的表格设计:
- 表 shop_cart 有什么用?
- 如果 shop_order 有一个 customer_id #1 和一个与 customer #2 相关的 cart_id,这意味着什么?
- 为什么在一张表中称其为帐户,而在另一张表中称其为客户?保持一致。
推荐阅读
- javascript - JavaScript 中的三种函数声明到底有什么区别?
- matlab - 在MATLAB中将数组的每个单元格转换为一个块对角矩阵
- javascript - Firebase 身份验证用户
- java - libGDX:如何在按键后逐行读取和显示 .txt 文件中的文本?
- javascript - 在放置时显示下一个图像
- r - 将数据转换为生命表时的“Inf”数据
- php - 在 WooCommerce 存档页面中的产品标题下方显示 ACF 字段/图像
- python - Django : Can I Pre-fill forms with a model instance datas in form.py?
- ios - FileProviderExtension workingSet 枚举器没有调用
- php - Solr Client 和 Apache_Solr_Service 的区别?