首页 > 解决方案 > 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)
   );

标签: pythonmysqlmysql-workbench

解决方案


通过将站点购物车中的每个客户实际插入到订单表中,我至少解决了一次这个问题。

这做了三件事:

  1. 防止完成的订单 ID 连续(对某些人无用,对其他人有用)
  2. 提供了一种简单的方法来跟踪购物车放弃统计信息,当然还有
  3. 允许您在记录事务数据时拥有唯一的订单 ID(例如将选择插入order_bridge表中)。

如果您希望仅在交易完成后记录订单行,则操作顺序应为:

  1. 插入订单表信息(包括python计算总计)
  2. 检索唯一的订单表 ID
  3. 插入专辑行
  4. 插入订单桥行

推荐阅读