python - auto_increment 主键和链接表(Mysql)
问题描述
我正在尝试使用 MySQL 工作台将 Python 连接到 MySQL 数据库,我有一个特殊的问题。
我有一个程序正在运行,它显示库存专辑列表,然后用户可以选择要添加的专辑,然后当用户确认订单完成时,有脚本来编写这些新行并将这些新行提交到数据库。
我的问题是:当将行写入order_bridge表时,每行的entryid都是唯一的,并且该主键无法引用order表。
我正在考虑创建一个触发器,将订单的总成本插入到订单表中,从创建的行中获取新的auto_increment值,然后将order_bridge中新写入的行更新为都具有相同的orderid,但我没有我无法理解这个过程。
以下是表格的设计方式:
create table albums
( albumid int,
albumname varchar(100),
artistname varchar(50),
price int,
quantity int,
primary key (albumid)
);
create table order_bridge (
entryid int auto_increment,
orderid int,
albumid int,
quantity int,
primary key (entryid),
foreign key (orderid) references orders (orderid),
foreign key (albumid) references albums (albumid)
);
create table orders
( orderid int auto_increment,
total decimal(5,2),
entrydate datetime default current_timestamp,
primary key(orderid)
);
解决方案
通过将站点购物车中的每个客户实际插入到订单表中,我至少解决了一次这个问题。
这做了三件事:
- 防止完成的订单 ID 连续(对某些人无用,对其他人有用),
- 提供了一种简单的方法来跟踪购物车放弃统计信息,当然还有
- 允许您在记录事务数据时拥有唯一的订单 ID(例如将选择插入
order_bridge
表中)。
如果您希望仅在交易完成后记录订单行,则操作顺序应为:
- 插入订单表信息(包括python计算总计)
- 检索唯一的订单表 ID
- 插入专辑行
- 插入订单桥行
推荐阅读
- ios - 应用预览分辨率(1200x1600) 适用于 iPad Pro
- javascript - onclick 事件在元素被点击之前触发
- list - 将 CSV 转换为列表
- > 有行和列
- sql - SQL Server 的全文搜索 CONTAINS() 是否容易受到 SQL 注入的攻击?
- c - 用C计算圆的面积
- javascript - 我的由 makestyle 材质 ui 制作的样式被某些东西覆盖了
- image-processing - cropVariants 的 imageManipulation 中的奇怪行为
- jquery - 使用 jquery 选择多个值
- reactjs - ant-design-pro,登录,TypeError:_form2.default.create(...) 不是函数
- java - while循环的时间复杂度