gpt4 book ai didi

php - 如何将数据复制到另一个表并避免键冲突?

转载 作者:行者123 更新时间:2023-11-30 22:46:50 25 4
gpt4 key购买 nike

我正在用 PHP/MySQL 构建一个应用程序。它包含 2 个数据库。数据库 1 用于临时存储来自最终用户的订单。用户确认订单后,它将通过 SELECT...INSERT 复制到数据库 2 中的 2 个表中。然后将清理数据库 1 中的表,以便用户可以处理新订单。换句话说,数据库 1 中的表在任何给定时间都不会包含超过 1 个订单。两张表分别保存订单及​​其对应的商品。数据库1和数据库2的表结构完全相同,当订单中的商品转移到数据库2的表中时,会发生key冲突。

问题 1:解决此键冲突的最佳方法是什么?

我试图明确选择除键之外的列,但这并不能完全解决问题。最好使用 INSERT INTO db2.table (SELECT * FROM db1.table) 查询来传输此数据,而不必明确提及所有列。

另外,当用户想在当前记录转储到数据库2后立即编辑时,这是不可能的,因为数据库1和数据库2中的表无法链接。此外,该记录可以被插入到数据库 2 中两次。

问题2:用户如何在不退出菜单并在数据库2的表中查找记录的情况下仍然编辑当前记录?

问题 3:如何避免将同一条记录插入数据库 2 的表中两次?

由于项目采用模块化方法,因此选择了具有 2 个数据库的设计。此外,数据库 2 与数据库 1 是分开的,这意味着它们不能干涉。而且,由于数据库分为两部分,因此编写两个小块比编写一个大块更容易。

最佳答案

拥有 2 个数据库并不是一个坏主意。

我会用 2 个表概念之间的“外键”关系来解决这个问题。当您将 db1 记录中的所有内容插入 db2 时,向 db2 (db2_fkey) 添加一个新的“外键”字段,其中包含来自 db1 记录的“主键”。

这样您就可以读取 db2 上的记录并使用 db2_fkey 关联回 db1 上的记录。您将能够确定该记录已从 db1 中清除。此外,您还可以在 db2 上拥有 db2_fkey 字段中具有相同值的多于 1 条记录。 MySQL 中有两个表之间的外键自动处理,您必须使用这种方法手动编码(比如从两个表中删除记录)。但这种关系方法应该可以回答您的应用问题。

关于php - 如何将数据复制到另一个表并避免键冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29371350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com