2

我正在寻找合并 2 个具有重叠主键值 (users_id) 的 MySQL 表的最佳方法

两张表的结构不同,

MEMEBR(member_id,memeber_email,member_dob,....) 当前 Next Auto Increment Value 27014

USER(users_id, email,name,dob,.....) 当前 Next Auto Increment Value 23734

这两个表属于不同的应用程序,并且有许多带有引用主键值(Member_id 和 users_id)的日志/事务表。

我已经编写查询以从 USER 中选择数据并插入到 MEMBER 中,但主要问题是 IDS 重叠。起初我想在 MEMBER 中的最后一条记录之后附加所有用户记录,但这会生成新的 IDS,并导致 USER 应用程序引用表中的不一致。

第二,我认为在 MEMBER 中存储一个额外的字段 Users_id 以跟踪 USER 应用程序中的相关记录。

现在在这个额外的字段中为 MEMBER 应用程序用户存储什么。由于现在合并的用户将无缝使用两个应用程序,因此它需要在该字段中设置一个值,当然与 member_id 相同。

所以现在,MEMBER(memeber_id,Users_id,email,....) 1,1,a@b.com 2,2,b@b.com 。. . 27014,27014,z@b.com here end MEMBER record 27015,1,aa@bb.com 来自用户表的第一条记录

现在我在这里保持一致。

user_id 1 存在于 member_id 1 (1,1,a@b.com) 和 member_id 27015 (27015,1,aa@bb.com) 中

为了解决这个问题,我想到的另一点是将所有现有成员应用程序和未来用户的 users_id 字段设置为 0,这意味着只需从 USER 应用程序中保存现有 users_id。

如果您理解并面临同样的问题,或者可以像我一样思考,请提供帮助。

可能有人会问这个问题或真正的问题,所以。

问题:如上述问题所述,当合并来自 2 个不同应用程序的 2 个用户表时,处理重叠 id 的最佳方法是什么,该用户将无缝访问这两个应用程序。

任何帮助表示赞赏。

让我知道是否需要更多信息。

4

2 回答 2

1

合并一个用户记录后,它是当前 ID 和新 ID。然后更新所有表中的这些 ID:

UPDATE table1 set UserID=:newID where UserID=:oldID
UPDATE table2 set UserID=:newID where UserID=:oldID
etc.

重复。

于 2013-03-18T11:55:34.637 回答
0

我会做以下事情:

  1. 使用新的主/自动增量键和保存合并结果的所有必要列创建单独的表
  2. 用两个表的结果填充新表,从而创建新的 ID
  3. 使用新 ID 更新所有引用 MEMBER 和 USER 的表(这可能还包括删除/重新创建外键约束以指向新的合并表)
  4. 删除旧表。
于 2013-03-18T11:55:09.987 回答