我正在用PHP / MySQL构建应用程序。它包含2个数据库。数据库1用于临时存储最终用户的订单。用户确认订单后,将使用SELECT ... INSERT将其复制到数据库2中,分成2个表。然后将清除数据库1中的表,以便用户可以进行新的订单处理。换句话说,在任何给定时间,数据库1中的表永远不会持有超过1个顺序。这两个表分别保存订单及​​其对应的项目。数据库1和数据库2中的表结构相同。当属于某个订单的项目转移到数据库2中的表时,将发生键冲突。

问题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字段中具有相同的值。 MySQL中有一个自动处理功能,其中有两个表之间的外键,您将必须使用这种方法手动进行编码(例如从两个表中删除记录)。但是这种关系方法应该回答您的应用程序问题。

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

10-13 06:01
查看更多