将2个用户表与重叠的主键值合并

时间:2013-03-18 11:45:43

标签: mysql

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

两个表都有不同的结构,

MEMEBR(member_id,memeber_email,member_dob,....)目前下一个自动递增值27014

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

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

我已经编写了查询来从USER和Insert Into MEMBER中选择数据,但主要问题是重叠IDS。 起初我认为在MEMBER中的最后一条记录之后附加USERS的所有记录,但这会产生新的IDS,并导致USER应用程序参考表中的不一致。

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

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

现在, 会员(memeber_id,Users_id,电子邮件,....) 1,1,一@ b.com 2,2,B @ b.com 。 。 。 27014,27014,z @ b.com此处结束会员记录 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的最佳方法是什么,该用户将无缝访问这两个应用程序。

任何帮助表示感谢。

如果需要进一步的信息,请告诉我。

2 个答案:

答案 0 :(得分:1)

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

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

重复。

答案 1 :(得分:0)

我会做以下事情:

  1. 使用新的primary / autoincrement键创建单独的表,并使用所有必要的列来保存合并结果
  2. 使用两个表的结果填充新表,从而创建新ID
  3. 使用新ID更新所有引用MEMBER和USER的表(这可能还包括删除/重新创建外键约束以指向新的合并表)
  4. 删除旧表。