Php 使用不同的主键合并mysql中表的引用行

Php 使用不同的主键合并mysql中表的引用行,php,mysql,foreign-keys,primary-key,cascade,Php,Mysql,Foreign Keys,Primary Key,Cascade,我正在构建一个系统,收集不同互联网服务的用户信息,但事先对这些用户一无所知。我将这些信息存储在MySQL数据库中。有两个表,外部用户表示某些服务中的用户名,内部用户表示许多外部用户实际上是同一个人 EXTERNAL_USER(internal_user_id REFERENCES INTERNAL_USER(id) ON UPDATE CASCADE,service_id,name) INTERNAL_USER(id PRIMARY KEY,...) OTHER_TABLES_USING_INT

我正在构建一个系统,收集不同互联网服务的用户信息,但事先对这些用户一无所知。我将这些信息存储在MySQL数据库中。有两个表,外部用户表示某些服务中的用户名,内部用户表示许多外部用户实际上是同一个人

EXTERNAL_USER(internal_user_id REFERENCES INTERNAL_USER(id) ON UPDATE CASCADE,service_id,name)
INTERNAL_USER(id PRIMARY KEY,...)
OTHER_TABLES_USING_INTERNALUSER(internal_user_id REFERENCES INTERNAL_USER(id) ON UPDATE CASCADE,..)
问题是,我有时会遇到一些外部用户,这些用户被内部用户分开,因为我最初并不知道这些用户名对应于同一个用户

e.g.
--What I have
EXT
(1,a,..)
(1,b,..)
(2,c,..)

INT
(1,..)
(2,..)

OTHER
(1,..)
(2,..)

--What I want
EXT
(a,1,..)
(b,1,..)
(c,1,..)

INT
(1,..)

OTHER
(1,..)
(1,..)
麻烦的是,要做到这一点,我需要以某种方式将所有对INTERNAL(2)的引用旋转到INTERNAL(1),因为我无法将INTERNAL(2)的主键更改为INTERNAL(1)

一种方法是只使用我的业务逻辑来更新每个父表中的引用,但这会很繁琐,而且可能容易出错,因此我希望有一种方法可以让数据库知道应该合并内部行